------- Comment #7 from rguenth at gcc dot gnu dot org 2010-03-19 12:40 ------- make_extraction (mode=SImode, inner=0x7ffff5b48ac8, pos=0, pos_rtx=0x0, len=8, unsignedp=1, in_dest=0, in_compare=0) at /space/rguenther/src/svn/trunk/gcc/combine.c:6648 6648 enum machine_mode is_mode = GET_MODE (inner); (gdb) call debug_rtx (inner) (subreg:SI (ior:QI (subreg:QI (ior:SI (reg:SI 67 [ g_9 ]) (const_int 1 [0x1])) 0) (const_int -2 [0xfffffffffffffffe])) 0)
if (CONST_INT_P (new_rtx)) return gen_int_mode (INTVAL (new_rtx), mode); misses the nececssary truncation. Dropping the special casing works (but doesn't optimize). Fixing the appearantly many issues works as well. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43438