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

Reply via email to