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?