http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52862

--- Comment #2 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-04-04 
11:56:31 UTC ---
Reduced testcase, fails with -O:

typedef struct _AVLPVNodeCore {
    void * Key;
} AVLPVNODECORE;
void ASMAtomicWritePtrVoid(void * volatile *ppv, const void *pv);
typedef struct RTTHREADINT {
    AVLPVNODECORE Core;
} *PRTTHREADINT;
void rtThreadDestroy(PRTTHREADINT pThread)
{
  __typeof__(*(&pThread->Core.Key)) volatile * const ppvTypeChecked =
(&pThread->Core.Key);
  __typeof__(*(&pThread->Core.Key)) const pvTypeChecked = ((void *)0);
  ASMAtomicWritePtrVoid((void * volatile *)(ppvTypeChecked), (void
*)(pvTypeChecked));
}

We ICE here:

47        /* Propagate overflow to the NULL pointer.  */
48        if (integer_zerop (expr))
49          return force_fit_type_double (type, double_int_zero, 0,
50                                        TREE_OVERFLOW (expr));

with expr being NON_LVALUE_EXPR <0B>.

Reply via email to