[Bug middle-end/45074] GCC Segmentation fault - negating global register variables
steven at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Nov 12 14:15:00 GMT 2010
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45074
--- Comment #5 from Steven Bosscher <steven at gcc dot gnu.org> 2010-11-12 14:09:12 UTC ---
operand_subword => simplify_gen_subreg => simplify_subreg / validate_subreg:
simplify_gen_subreg (outermode=SImode, op=0x2000000000617000, innermode=DFmode,
byte=0) at ../../gcc-4.5.0/gcc/simplify-rtx.c:5449
5449 newx = simplify_subreg (outermode, op, innermode, byte);
(gdb) l
5444 simplify_gen_subreg (enum machine_mode outermode, rtx op,
5445 enum machine_mode innermode, unsigned int byte)
5446 {
5447 rtx newx;
5448
5449 newx = simplify_subreg (outermode, op, innermode, byte);
5450 if (newx)
5451 return newx;
5452
5453 if (GET_CODE (op) == SUBREG
(gdb) p simplify_subreg (outermode, op, innermode, byte)
$9 = (struct rtx_def *) 0x0
(gdb) p validate_subreg (outermode, innermode, op, byte)
$10 = 0 '\000'
(gdb)
>From validate_subreg:
703 /* ??? This should not be here. Temporarily continue to allow
word_mode
704 subregs of anything. The most common offender is (subreg:SI
(reg:DF)).
705 Generally, backends are doing something sketchy but it'll take
time to
706 fix them all. */
707 if (omode == word_mode)
708 ;
709 /* ??? Similarly, e.g. with (subreg:DF (reg:TI)). Though
store_bit_field
710 is the culprit here, and not the backends. */
711 else if (osize >= UNITS_PER_WORD && isize >= osize)
(gdb) p omode
$16 = SImode
(gdb) p imode
$17 = DFmode
(gdb)
More information about the Gcc-bugs
mailing list