[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:05:00 GMT 2010
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45074
Steven Bosscher <steven at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|WAITING |NEW
Component|target |middle-end
--- Comment #4 from Steven Bosscher <steven at gcc dot gnu.org> 2010-11-12 13:57:14 UTC ---
Confirmed.
Configured with: "../gcc-4.5.0/configure --with-gmp=/home/stevenb
--with-mpfr=/home/stevenb --enable-languages=c,c++ --disable-checking
--disable-bootstrap --disable-nls --disable-libmudflap --disable-libssp
--target=mips-sde-elf --with-arch=mips32r2 --enable-interwork --enable-multilib
--with-stabs --disable-shared --disable-threads --with-newlib" on
ia64-unknown-linux-gnu.
Backtrace from GDB:
GNU C++ (GCC) version 4.5.0 (mips-sde-elf)
compiled by GNU C version 4.4.4, GMP version 4.2.4, MPFR version 2.4.1,
MPC version 0.8
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 2773ee7be74a4d08fc337c378903fce1
Program received signal SIGSEGV, Segmentation fault.
0x4000000000738ef0 in emit_move_insn (x=0x0, y=0x20000000006173e0) at
../../gcc-4.5.0/gcc/expr.c:3427
3427 enum machine_mode mode = GET_MODE (x);
(gdb) bt
#0 0x4000000000738ef0 in emit_move_insn (x=0x0, y=0x20000000006173e0) at
../../gcc-4.5.0/gcc/expr.c:3427
#1 0x4000000000a89a10 in expand_absneg_bit (code=NEG, mode=DFmode,
op0=0x20000000006173a0, target=0x2000000000617000) at
../../gcc-4.5.0/gcc/optabs.c:2999
#2 0x4000000000a8b790 in expand_unop (mode=DFmode, unoptab=0x6000000000033bd0,
op0=0x20000000006173a0, target=0x2000000000617000, unsignedp=0)
at ../../gcc-4.5.0/gcc/optabs.c:3217
#3 0x400000000075a8b0 in expand_expr_real_2 (ops=0x60000fffffe16258,
target=0x2000000000617000, tmode=DFmode, modifier=EXPAND_NORMAL) at
../../gcc-4.5.0/gcc/expr.c:7888
#4 0x4000000000767fd0 in expand_expr_real_1 (exp=0x200000000050c8d0,
target=0x2000000000617000, tmode=DFmode, modifier=EXPAND_NORMAL, alt_rtl=0x0)
at ../../gcc-4.5.0/gcc/expr.c:9650
#5 0x40000000007542d0 in expand_expr_real (exp=0x200000000050c8d0,
target=0x2000000000617000, tmode=DFmode, modifier=EXPAND_NORMAL, alt_rtl=0x0)
at ../../gcc-4.5.0/gcc/expr.c:7187
#6 0x400000000075ddd0 in expand_expr_real_1 (exp=0x200000000063e5d0,
target=0x2000000000617000, tmode=DFmode, modifier=EXPAND_NORMAL,
alt_rtl=0x60000fffffe167f0)
at ../../gcc-4.5.0/gcc/expr.c:8416
#7 0x40000000007543a0 in expand_expr_real (exp=0x200000000063e5d0,
target=0x2000000000617000, tmode=DFmode, modifier=EXPAND_NORMAL,
alt_rtl=0x60000fffffe167f0)
at ../../gcc-4.5.0/gcc/expr.c:7195
#8 0x4000000000741b70 in store_expr (exp=0x200000000063e5d0,
target=0x2000000000617000, call_param_p=0, nontemporal=0 '\000') at
../../gcc-4.5.0/gcc/expr.c:4681
#9 0x400000000073fa90 in expand_assignment (to=0x20000000005281e0,
from=0x200000000063e5d0, nontemporal=0 '\000') at
../../gcc-4.5.0/gcc/expr.c:4465
#10 0x4000000000515e80 in expand_gimple_stmt_1 (stmt=0x20000000006440f0) at
../../gcc-4.5.0/gcc/cfgexpand.c:1872
#11 0x4000000000516890 in expand_gimple_stmt (stmt=0x20000000006440f0) at
../../gcc-4.5.0/gcc/cfgexpand.c:1978
#12 0x4000000000520ba0 in expand_gimple_basic_block (bb=0x200000000062c208) at
../../gcc-4.5.0/gcc/cfgexpand.c:3384
#13 0x4000000000524410 in gimple_expand_cfg () at
../../gcc-4.5.0/gcc/cfgexpand.c:3834
#14 0x4000000000ad2810 in execute_one_pass (pass=0x600000000002e6c8) at
../../gcc-4.5.0/gcc/passes.c:1568
#15 0x4000000000ad2d70 in execute_pass_list (pass=0x600000000002e6c8) at
../../gcc-4.5.0/gcc/passes.c:1623
#16 0x4000000000e9c1d0 in tree_rest_of_compilation (fndecl=0x2000000000625600)
at ../../gcc-4.5.0/gcc/tree-optimize.c:413
#17 0x400000000132b330 in cgraph_expand_function (node=0x2000000000650000) at
../../gcc-4.5.0/gcc/cgraphunit.c:1548
#18 0x400000000132ba70 in cgraph_expand_all_functions () at
../../gcc-4.5.0/gcc/cgraphunit.c:1627
#19 0x400000000132cfb0 in cgraph_optimize () at
../../gcc-4.5.0/gcc/cgraphunit.c:1875
#20 0x4000000001328570 in cgraph_finalize_compilation_unit () at
../../gcc-4.5.0/gcc/cgraphunit.c:1096
#21 0x400000000017a810 in cp_write_global_declarations () at
../../gcc-4.5.0/gcc/cp/decl2.c:3833
#22 0x4000000000d85ec0 in compile_file () at ../../gcc-4.5.0/gcc/toplev.c:1065
#23 0x4000000000d8d030 in do_compile () at ../../gcc-4.5.0/gcc/toplev.c:2417
#24 0x4000000000d8d330 in toplev_main (argc=26, argv=0x60000fffffe16fd8) at
../../gcc-4.5.0/gcc/toplev.c:2459
#25 0x400000000042b6f0 in main (argc=26, argv=0x60000fffffe16fd8) at
../../gcc-4.5.0/gcc/main.c:35
(gdb) l
3422 Return the last instruction emitted. */
3423
3424 rtx
3425 emit_move_insn (rtx x, rtx y)
3426 {
3427 enum machine_mode mode = GET_MODE (x);
3428 rtx y_cst = NULL_RTX;
3429 rtx last_insn, set;
3430
3431 gcc_assert (mode != BLKmode
(gdb) up
#1 0x4000000000a89a10 in expand_absneg_bit (code=NEG, mode=DFmode,
op0=0x20000000006173a0, target=0x2000000000617000) at
../../gcc-4.5.0/gcc/optabs.c:2999
2999 emit_move_insn (targ_piece, temp);
(gdb) l
2994 temp = expand_binop (imode, code == ABS ? and_optab :
xor_optab,
2995 op0_piece,
2996 immed_double_const (lo, hi, imode),
2997 targ_piece, 1, OPTAB_LIB_WIDEN);
2998 if (temp != targ_piece)
2999 emit_move_insn (targ_piece, temp);
3000 }
3001 else
3002 emit_move_insn (targ_piece, op0_piece);
3003 }
(gdb)
emit_move_insn() is being called with targ_piec == NULL
More information about the Gcc-bugs
mailing list