Andreas,

This patch seems to have introduced a failure for all of the
gcc.dg-struct-layout tests on AIX.

gcc.dg-struct-layout-1/t001_test.h:8:1: internal compiler error: in
int_mode_for_mode, at stor-layout.c:424

After your change, int_mode_for_mode now is passed VOIDmode because
the rtx is a CONST_INT.

(gdb) where
#0  fancy_abort (file=0x112b2628 <error reading variable>, line=424,
    function=0x112b271c <error reading variable>)
    at /farm/dje/src/src/gcc/diagnostic.c:899
#1  0x1045ff14 in int_mode_for_mode (mode=VOIDmode)
    at /farm/dje/src/src/gcc/stor-layout.c:424
#2  0x10803734 in extract_bit_field_1 (str_rtx=0x7032cdc0, bitsize=27,
    bitnum=0, unsignedp=1, packedp=0 '<error reading variable>, target=0x0,
    mode=BLKmode, tmode=SImode, fallback_p=1 '<error reading variable>)
    at /farm/dje/src/src/gcc/expmed.c:1304
#3  0x1080567c in extract_bit_field (str_rtx=0x7032cdc0, bitsize=27, bitnum=0,
    unsignedp=1, packedp=0 '<error reading variable>, target=0x0,
    mode=BLKmode, tmode=SImode) at /farm/dje/src/src/gcc/expmed.c:1688
#4  0x107fff60 in store_bit_field_1 (str_rtx=0x7032cae0, bitsize=59, bitnum=0,
    bitregion_start=0, bitregion_end=0, fieldmode=DImode, value=0x7032caf0,
    fallback_p=1 '<error reading variable>)
    at /farm/dje/src/src/gcc/expmed.c:568
#5  0x10801578 in store_bit_field (str_rtx=0x7032cae0, bitsize=59, bitnum=0,
    bitregion_start=0, bitregion_end=0, fieldmode=VOIDmode, value=0x7032caf0)
    at /farm/dje/src/src/gcc/expmed.c:852
#6  0x10624258 in store_field (target=0x7032cae0, bitsize=59, bitpos=0,
    bitregion_start=0, bitregion_end=0, mode=VOIDmode, exp=0x7015c3a0,
    type=0x70159360, alias_set=0, nontemporal=0 '<error reading variable>)
    at /farm/dje/src/src/gcc/expr.c:6432

(gdb) up
#2  0x10803734 in extract_bit_field_1 (str_rtx=0x7032cdc0, bitsize=27,
    bitnum=0, unsignedp=1, packedp=0 '<error reading variable>, target=0x0,
    mode=BLKmode, tmode=SImode, fallback_p=1 '<error reading variable>)
    at /farm/dje/src/src/gcc/expmed.c:1304
1304        enum machine_mode imode = int_mode_for_mode (GET_MODE (op0));
(gdb) print op0
$5 = (rtx) 0x7032cdc0
(gdb) pr
(const_int 3673047 [0x380bd7])
(gdb) up
#3  0x1080567c in extract_bit_field (str_rtx=0x7032cdc0, bitsize=27, bitnum=0,
    unsignedp=1, packedp=0 '<error reading variable>, target=0x0,
    mode=BLKmode, tmode=SImode) at /farm/dje/src/src/gcc/expmed.c:1688
1688      return extract_bit_field_1 (str_rtx, bitsize, bitnum,
unsignedp, packedp,
(gdb) print str_rtx
$6 = (rtx) 0x7032cdc0
(gdb) pr
(const_int 3673047 [0x380bd7])

Thanks, David

Reply via email to