------- Comment #2 from rguenth at gcc dot gnu dot org 2008-08-27 19:35 ------- Confirmed.
#1 0x0845d476 in simplify_subreg (outermode=SImode, op=0xb7d50d2c, innermode=DImode, byte=0) at /home/richard/src/trunk/gcc/simplify-rtx.c:4956 4956 gcc_assert (GET_MODE (op) == innermode #3 0x081feadf in operand_subword (op=0xb7d50d2c, offset=0, validate_address=1, mode=DImode) at /home/richard/src/trunk/gcc/emit-rtl.c:1399 1399 return simplify_gen_subreg (word_mode, op, mode, (offset * UNITS_PER_WORD)); (gdb) call debug_rtx (op) (subreg:SI (reg/v:DI 58 [ p_79.30 ]) 0) (gdb) print word_mode $2 = SImode (gdb) print mode $3 = DImode from expanding (int) p_79.30 & 1 with a wrong type on the BIT_AND_EXPR (long long, DImode). Sounds familiar somehow ... Generated by PRE D.2018_117 = (int) p_79_115; pretmp.18_43 = D.2018_117 & 1; pretmp.18_43 is long long, D.2018_117 is int. Probably a wrong typed constant in # p_79_115 = PHI <1(3), 0(9)> I will have a closer look. -- rguenth at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at gcc dot gnu |rguenth at gcc dot gnu dot |dot org |org Status|UNCONFIRMED |ASSIGNED Component|c |tree-optimization Ever Confirmed|0 |1 Keywords| |ice-on-valid-code Last reconfirmed|0000-00-00 00:00:00 |2008-08-27 19:35:16 date| | Summary|ice in simplify_subreg, at |[4.4 Regression] ice in |simplify-rtx.c:4957 |simplify_subreg, at | |simplify-rtx.c:4957 Target Milestone|--- |4.4.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37258