------- Comment #2 from rguenth at gcc dot gnu dot org 2007-10-04 12:28 ------- Reduced testcase, fails with -O:
typedef struct { unsigned long attr; int chars[2]; } cchar_t; typedef struct _win_st { cchar_t _bkgrnd; } WINDOW; void render_char(WINDOW *win, cchar_t ch) { if ((ch).chars[0] == L' ' && (ch).chars[1] == L'\0') ch = win->_bkgrnd; } #1 0x0000000000945da0 in bitfield_overlaps_p (blen=0x2b7db0ca8b70, bpos=0x2b7db0cc43c0, fld=0x13f66d0, data=0x7ffff9e5cfc0) at /space/rguenther/src/svn/pointer_plus/gcc/tree-sra.c:2901 2901 gcc_unreachable (); (gdb) call debug_tree (fld->element) <integer_cst 0x2b7db0ca8810 type <integer_type 0x2b7db0cb7000 long unsigned int> constant invariant 1> -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33655