This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c/16397] New: [regression 3.5] libiberty/cp-demangle.c:3923: ICE: in emit_group_load, at expr.c:1843
- From: "danglin at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 7 Jul 2004 02:42:00 -0000
- Subject: [Bug c/16397] New: [regression 3.5] libiberty/cp-demangle.c:3923: ICE: in emit_group_load, at expr.c:1843
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
if [ x"-fPIC" != x ]; then \
/xxx/gnu/gcc-3.3/objdir/gcc/xgcc -B/xxx/gnu/gcc-3.3/objdir/gcc/ -B/opt/gnu64/g
cc/gcc-3.5.0-gnu-ld/hppa64-hp-hpux11.11/bin/ -B/opt/gnu64/gcc/gcc-3.5.0-gnu-ld/h
ppa64-hp-hpux11.11/lib/ -isystem /opt/gnu64/gcc/gcc-3.5.0-gnu-ld/hppa64-hp-hpux1
1.11/include -isystem /opt/gnu64/gcc/gcc-3.5.0-gnu-ld/hppa64-hp-hpux11.11/sys-in
clude -c -DHAVE_CONFIG_H -O2 -g -O2 -I. -I../../../gcc/libiberty/../include -W
-Wall -Wtraditional -pedantic -fPIC ../../../gcc/libiberty/cp-demangle.c -o pic/
cp-demangle.o; \
else true; fi
../../../gcc/libiberty/cp-demangle.c: In function `d_demangle':
../../../gcc/libiberty/cp-demangle.c:3923: internal compiler error: in emit_grou
p_load, at expr.c:1843
Please submit a full bug report,
The same problem previously was noted in PR 16167:
<http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16167>
Breakpoint 1, emit_group_load (dst=0x800003fffe6065a0,
orig_src=0x800003fffe883d00, type=0x0, ssize=0)
at ../../gcc/gcc/expr.c:1843
1843 abort ();
(gdb) p debug_rtx (dst)
(parallel:TI [
(expr_list (reg:DI 24 %r24)
(const_int 0 [0x0]))
(expr_list (reg:DI 23 %r23)
(const_int 8 [0x8]))
])
$1 = void
(gdb) p debug_rtx (orig_src)
(const_int 192 [0xc0])
$2 = void
(gdb) bt
#0 emit_group_load (dst=0x800003fffe6065a0, orig_src=0x800003fffe883d00,
type=0x0, ssize=0) at ../../gcc/gcc/expr.c:1843
#1 0x40000000003691fc in emit_library_call_value_1 (retval=1,
orgfun=0x800003fffeea2a80, value=0x0, fn_type=LCT_CONST, outmode=TImode,
nargs=2, p=0x800003fffeff31f8) at ../../gcc/gcc/calls.c:3898
#2 0x4000000000369e1c in emit_library_call_value (orgfun=Error accessing memory
address 0x0: Invalid argument.
)
at ../../gcc/gcc/calls.c:4131
#3 0x4000000000623900 in expand_binop (mode=TImode,
binoptab=0x800003fffee02800, op0=0x800003fffe792fe0,
op1=0x800003fffe883d00, target=0x800003fffe7d4560, unsignedp=1,
methods=OPTAB_LIB_WIDEN) at ../../gcc/gcc/optabs.c:1789
#4 0x4000000000444e18 in expand_mult (mode=TImode, op0=0x800003fffe792fe0,
op1=0x800003fffe883d00, target=0x800003fffe7d4560, unsignedp=1)
at ../../gcc/gcc/expmed.c:2720
#5 0x40000000004868e0 in expand_expr_real_1 (exp=0x800003fffe8ede10,
target=0x800003fffe7d4560, tmode=TImode, modifier=EXPAND_NORMAL,
alt_rtl=0x800003fffeff2150) at ../../gcc/gcc/expr.c:7953
#6 0x40000000004707ac in expand_expr_real (exp=0x800003fffe8ede10,
target=0x800003fffe7d4560, tmode=TImode, modifier=EXPAND_NORMAL,
alt_rtl=0x800003fffeff2150) at ../../gcc/gcc/expr.c:6396
#7 0x400000000045f518 in store_expr (exp=0x800003fffe8ede10,
target=0x800003fffe7d4560, want_value=0) at ../../gcc/gcc/expr.c:4218
#8 0x400000000045da90 in expand_assignment (to=0x800003fffecf5700,
---Type <return> to continue, or q <return> to quit---
from=0x800003fffe8ede10, want_value=0) at ../../gcc/gcc/expr.c:3998
#9 0x4000000000495760 in expand_expr_real_1 (exp=0x800003fffe8d1a00,
target=0x0, tmode=VOIDmode, modifier=EXPAND_NORMAL, alt_rtl=0x0)
at ../../gcc/gcc/expr.c:8790
#10 0x400000000047074c in expand_expr_real (exp=0x800003fffe8d1a00,
target=0x800003fffee99400, tmode=VOIDmode, modifier=EXPAND_NORMAL,
alt_rtl=0x0) at ../../gcc/gcc/expr.c:6390
#11 0x400000000070a688 in expand_expr (exp=Error accessing memory address 0x0:
Invalid argument.
) at expr.h:533
#12 0x4000000000712274 in expand_expr_stmt (exp=0x800003fffe8d1a00)
at ../../gcc/gcc/stmt.c:2046
#13 0x40000000007c155c in expand_block (bb=0x800003fffe9920e0, dump_file=0x0)
at ../../gcc/gcc/cfgexpand.c:182
#14 0x40000000007c29c0 in tree_expand_cfg () at ../../gcc/gcc/cfgexpand.c:411
#15 0x400000000021a4f4 in execute_one_pass (pass=0x8000000100001800)
at ../../gcc/gcc/tree-optimize.c:417
#16 0x400000000021a620 in execute_pass_list (pass=0x8000000100001800)
at ../../gcc/gcc/tree-optimize.c:442
#17 0x400000000021aa88 in tree_rest_of_compilation (
fndecl=0x800003fffeb24000, nested_p=0 '\0')
at ../../gcc/gcc/tree-optimize.c:518
#18 0x4000000000124cf4 in c_expand_body (fndecl=0x800003fffeb24000)
at ../../gcc/gcc/c-decl.c:6333
#19 0x40000000007f81b0 in cgraph_expand_function (node=0x800003fffed0ce00)
---Type <return> to continue, or q <return> to quit---
at ../../gcc/gcc/cgraphunit.c:797
#20 0x40000000007fbaac in cgraph_expand_all_functions ()
at ../../gcc/gcc/cgraphunit.c:1669
#21 0x40000000007fc074 in cgraph_optimize ()
at ../../gcc/gcc/cgraphunit.c:1759
#22 0x40000000001af71c in c_objc_common_finish_file ()
at ../../gcc/gcc/c-objc-common.c:224
#23 0x40000000000f9798 in finish_file () at ../../gcc/gcc/c-lang.c:201
#24 0x400000000019d880 in c_common_parse_file (set_yydebug=Error accessing memory
address 0x0: Invalid argument.
)
at ../../gcc/gcc/c-opts.c:1078
#25 0x40000000007380c4 in compile_file () at ../../gcc/gcc/toplev.c:981
#26 0x400000000073b99c in do_compile () at ../../gcc/gcc/toplev.c:2066
#27 0x400000000073bab0 in toplev_main (argc=28, argv=0x800003fffeff0690)
at ../../gcc/gcc/toplev.c:2098
#28 0x40000000001cfed4 in main (argc=Error accessing memory address 0x0: Invalid
argument.
) at ../../gcc/gcc/main.c:35
The problem is emit_group_load can't handle be passed a CONST_INT in
orig_src with ssize == 0. If ssize is -1, this failure doesn't occur.
There is a similar call to emit_group_load to that in calls.c in expr.c.
A value of -1 is always passed there:
if (partial > 0 && reg != 0)
{
/* Handle calls that pass values in multiple non-contiguous locations.
The Irix 6 ABI has examples of this. */
if (GET_CODE (reg) == PARALLEL)
emit_group_load (reg, x, type, -1);
I think this is a bit too pesimistic. It appears that passing the
size of the mode of x is ok except when it is 0.
--
Summary: [regression 3.5] libiberty/cp-demangle.c:3923: ICE: in
emit_group_load, at expr.c:1843
Product: gcc
Version: 3.5.0
Status: UNCONFIRMED
Severity: critical
Priority: P2
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: danglin at gcc dot gnu dot org
CC: gcc-bugs at gcc dot gnu dot org
GCC build triplet: hppa64-hp-hpux11.11
GCC host triplet: hppa64-hp-hpux11.11
GCC target triplet: hppa64-hp-hpux11.11
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16397