This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/49723] gcc.c-torture/compile/pr46934.c: ICE in do_SUBST, at combine.c:707 at -O1 and above
- From: "danglin at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 13 Jul 2011 01:10:10 +0000
- Subject: [Bug middle-end/49723] gcc.c-torture/compile/pr46934.c: ICE in do_SUBST, at combine.c:707 at -O1 and above
- Auto-submitted: auto-generated
- References: <bug-49723-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49723
John David Anglin <danglin at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |ebotcazou at gcc dot
| |gnu.org
--- Comment #2 from John David Anglin <danglin at gcc dot gnu.org> 2011-07-13 01:09:39 UTC ---
(gdb) bt
#0 do_SUBST (into=0x417aa1e8, newval=0x4170cfb4) at
../../gcc/gcc/combine.c:706
#1 0x0029981a in subst (x=0x417aa1e0, from=0x417a52a0, to=0x4170cfb4,
in_dest=0, in_cond=0, unique_copy=0) at ../../gcc/gcc/combine.c:5227
#2 0x002996b7 in subst (x=0x41712ed0, from=0x417a52a0, to=0x4170cfb4,
in_dest=0, in_cond=0, unique_copy=0) at ../../gcc/gcc/combine.c:5189
#3 0x00292c99 in try_combine (i3=0x4176a84c, i2=0x4176a828, i1=0x0, i0=0x0,
new_direct_jump_p=0xbffff034, last_combined_insn=0x4176a84c) at
../../gcc/gcc/combine.c:3178
#4 0x0028cb6d in combine_instructions (f=0x417135c0, nregs=81) at
../../gcc/gcc/combine.c:1223
#5 0x002b1eb8 in rest_of_handle_combine () at ../../gcc/gcc/combine.c:13878
#6 0x0070bfda in execute_one_pass (pass=0xcf3360) at
../../gcc/gcc/passes.c:2063
#7 0x0070c477 in execute_pass_list (pass=0xcf3360) at
../../gcc/gcc/passes.c:2118
#8 0x0070c493 in execute_pass_list (pass=0xd44320) at
../../gcc/gcc/passes.c:2119
#9 0x0090a5ee in tree_rest_of_compilation (fndecl=0x41785300) at
../../gcc/gcc/tree-optimize.c:416
#10 0x00289022 in cgraph_expand_function (node=0x4178d000) at
../../gcc/gcc/cgraphunit.c:1804
#11 0x00289202 in cgraph_expand_all_functions () at
../../gcc/gcc/cgraphunit.c:1863
#12 0x00289a4a in cgraph_optimize () at ../../gcc/gcc/cgraphunit.c:2133
#13 0x002860d9 in cgraph_finalize_compilation_unit () at
../../gcc/gcc/cgraphunit.c:1304
#14 0x00038838 in c_write_global_declarations () at ../../gcc/gcc/c-decl.c:9844
#15 0x00830b46 in compile_file () at ../../gcc/gcc/toplev.c:564
#16 0x0083375f in do_compile () at ../../gcc/gcc/toplev.c:1886
#17 0x00833940 in toplev_main (argc=13, argv=0xbffff400) at
../../gcc/gcc/toplev.c:1958
#18 0x00149e0f in main (argc=13, argv=0xbffff400) at ../../gcc/gcc/main.c:36
(gdb) p debug_rtx (i3)
(insn 9 8 10 2 (set (reg:SI 73)
(minus:SI (reg:SI 26 %r26 [ reg_type ])
(reg:SI 74)))
/test/gnu/gcc/gcc/gcc/testsuite/gcc.c-torture/compile/pr46934.c:3 168
{*pa.md:5239}
(expr_list:REG_DEAD (reg:SI 26 %r26 [ reg_type ])
(expr_list:REG_DEAD (reg:SI 74)
(nil))))
$4 = void
(gdb) p debug_rtx (i2)
(insn 8 7 9 2 (set (reg:SI 74)
(const_int 2147483648 [0x80000000]))
/test/gnu/gcc/gcc/gcc/testsuite/gcc.c-torture/compile/pr46934.c:3 71
{*pa.md:2130}
(nil))
$5 = void
This is how insn 8 is generated:
(gdb) bt
#0 emit_move_sequence (operands=0xbfffe904, mode=SImode, scratch_reg=0x0) at
../../gcc/gcc/config/pa/pa.c:1541
#1 0x00171709 in gen_movsi (operand0=0x417a52a0, operand1=0x4170cfb4) at
pa.md:2048
#2 0x003a97e6 in emit_move_insn_1 (x=0x417a52a0, y=0x4170cfb4) at
../../gcc/gcc/expr.c:3280
#3 0x003a9c63 in emit_move_insn (x=0x417a52a0, y=0x4170cfb4) at
../../gcc/gcc/expr.c:3370
#4 0x00388537 in force_reg (mode=SImode, x=0x4170cfb4) at
../../gcc/gcc/explow.c:671
#5 0x00178945 in gen_casesi (operand0=0x41712e94, operand1=0x41712ea0,
operand2=0x4170c36c, operand3=0x4176a7e0, operand4=0x4176a72c) at pa.md:6918
#6 0x006fc425 in maybe_gen_insn (icode=CODE_FOR_casesi, nops=5,
ops=0xbfffebb0) at ../../gcc/gcc/optabs.c:7259
#7 0x006fc533 in maybe_expand_jump_insn (icode=CODE_FOR_casesi, nops=5,
ops=0xbfffebb0) at ../../gcc/gcc/optabs.c:7290
#8 0x006fc5cb in expand_jump_insn (icode=CODE_FOR_casesi, nops=5,
ops=0xbfffebb0) at ../../gcc/gcc/optabs.c:7316
#9 0x003dbe85 in try_casesi (index_type=0x417153c0, index_expr=0x411e8554,
minval=0x4172101c, range=0x4178ad3c, table_label=0x4176a7e0,
default_label=0x4176a72c, fallback_label=0x4176a750) at
../../gcc/gcc/expr.c:10152
#10 0x00814841 in expand_case (stmt=0x417a6000) at ../../gcc/gcc/stmt.c:2505
#11 0x0024c13d in expand_gimple_stmt_1 (stmt=0x417a6000) at
../../gcc/gcc/cfgexpand.c:1918
#12 0x0024ca1d in expand_gimple_stmt (stmt=0x417a6000) at
../../gcc/gcc/cfgexpand.c:2071
#13 0x00258312 in expand_gimple_basic_block (bb=0x417a7080) at
../../gcc/gcc/cfgexpand.c:3805
#14 0x0025b646 in gimple_expand_cfg () at ../../gcc/gcc/cfgexpand.c:4288
#15 0x0070bfda in execute_one_pass (pass=0xcf2f60) at
../../gcc/gcc/passes.c:2063
#16 0x0070c477 in execute_pass_list (pass=0xcf2f60) at
../../gcc/gcc/passes.c:2118
#17 0x0090a5ee in tree_rest_of_compilation (fndecl=0x41785300) at
../../gcc/gcc/tree-optimize.c:416
#18 0x00289022 in cgraph_expand_function (node=0x4178d000) at
../../gcc/gcc/cgraphunit.c:1804
#19 0x00289202 in cgraph_expand_all_functions () at
../../gcc/gcc/cgraphunit.c:1863
#20 0x00289a4a in cgraph_optimize () at ../../gcc/gcc/cgraphunit.c:2133
#21 0x002860d9 in cgraph_finalize_compilation_unit () at
../../gcc/gcc/cgraphunit.c:1304
#22 0x00038838 in c_write_global_declarations () at ../../gcc/gcc/c-decl.c:9844
#23 0x00830b46 in compile_file () at ../../gcc/gcc/toplev.c:564
#24 0x0083375f in do_compile () at ../../gcc/gcc/toplev.c:1886
#25 0x00833940 in toplev_main (argc=13, argv=0xbffff400) at
../../gcc/gcc/toplev.c:1958
#26 0x00149e0f in main (argc=13, argv=0xbffff400) at ../../gcc/gcc/main.c:36
(gdb) p debug_rtx (operands[1])
(const_int 2147483648 [0x80000000])
$15 = void
The problem would be avoid if the const_int was sign extended to
HOST_WIDE_INT, but who's supposed to do it?