------- 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