This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/43475] [4.5 Regression] ICE in form_sum, at reload.c:5348
- From: "rguenth at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 22 Mar 2010 11:11:39 -0000
- Subject: [Bug middle-end/43475] [4.5 Regression] ICE in form_sum, at reload.c:5348
- References: <bug-43475-10053@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #1 from rguenth at gcc dot gnu dot org 2010-03-22 11:11 -------
#1 0x0000000000958e6e in form_sum (mode=SImode, x=0x7ffff7fb2a80,
y=0x7ffff5ae1b58) at /space/rguenther/src/svn/trunk/gcc/reload.c:5348
5348 gcc_assert (GET_MODE (x) == mode || GET_MODE (x) == VOIDmode);
(gdb) call debug_rtx (x)
(reg/v:DI 41 r12 [orig:61 b ] [61])
(gdb) up
#2 0x000000000096560c in eliminate_regs_1 (x=0x7ffff5ae1af8,
mem_mode=VOIDmode, insn=0x7ffff5ae1ac8, may_use_invariant=1 '\001')
at /space/rguenther/src/svn/trunk/gcc/reload1.c:2678
2678 new_rtx = form_sum (GET_MODE (x), new0, new1);
#3 0x0000000000965914 in eliminate_regs_1 (x=0x7ffff5ae1ae0,
mem_mode=VOIDmode, insn=0x7ffff5ae1ac8, may_use_invariant=1 '\001')
at /space/rguenther/src/svn/trunk/gcc/reload1.c:2745
2745 new_rtx = eliminate_regs_1 (XEXP (x, 0), mem_mode, insn,
true);
#4 0x00000000009659f0 in eliminate_regs_1 (x=0x7ffff5ae1ac8,
mem_mode=VOIDmode, insn=0x7ffff5ae1ac8, may_use_invariant=1 '\001')
at /space/rguenther/src/svn/trunk/gcc/reload1.c:2768
2768 new_rtx = eliminate_regs_1 (XEXP (x, 1), mem_mode, insn,
true);
#5 0x00000000009679c5 in eliminate_regs_in_insn (insn=0x7ffff5ade000,
replace=0) at /space/rguenther/src/svn/trunk/gcc/reload1.c:3596
3596 REG_NOTES (insn)
(gdb) call debug_rtx (insn)
(insn 26 25 27 5 /tmp/t.f90:9 (set (mem/c/i:SI (plus:DI (reg/f:DI 7 sp)
(const_int 8 [0x8])) [6 D.1561+0 S4 A64])
(reg:SI 0 ax [83])) 47 {*movsi_1} (expr_list:REG_DEAD (reg:SI 0 ax
[83])
(expr_list:REG_EQUAL (plus:SI (reg/v:DI 41 r12 [orig:61 b ] [61])
(mem/c/i:SI (plus:DI (reg/f:DI 20 frame)
(const_int -4 [0xfffffffffffffffc])) [6 c+0 S4 A32]))
(nil))))
somehow in the REG_EQUAL note we have a SI mode PLUS with DI mode arguments.
It is regmove which changes
(insn 26 25 27 5 /tmp/t.f90:9 (set (mem/c/i:SI (plus:DI (reg/f:DI 20 frame)
(const_int -8 [0xfffffffffffffff8])) [6 D.1561+0 S4 A64])
(reg:SI 83)) 47 {*movsi_1} (expr_list:REG_DEAD (reg:SI 83)
(expr_list:REG_EQUAL (plus:SI (reg/v:SI 61 [ b ])
(mem/c/i:SI (plus:DI (reg/f:DI 20 frame)
(const_int -4 [0xfffffffffffffffc])) [6 c+0 S4 A32]))
(nil))))
to
(insn 26 25 27 5 /tmp/t.f90:9 (set (mem/c/i:SI (plus:DI (reg/f:DI 20 frame)
(const_int -8 [0xfffffffffffffff8])) [6 D.1561+0 S4 A64])
(reg:SI 83)) 47 {*movsi_1} (expr_list:REG_DEAD (reg:SI 83)
(expr_list:REG_EQUAL (plus:SI (reg/v:DI 61 [ b ])
(mem/c/i:SI (plus:DI (reg/f:DI 20 frame)
(const_int -4 [0xfffffffffffffffc])) [6 c+0 S4 A32]))
(nil))))
--
rguenth at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |bernds at gcc dot gnu dot
| |org
Status|UNCONFIRMED |NEW
Ever Confirmed|0 |1
Last reconfirmed|0000-00-00 00:00:00 |2010-03-22 11:11:38
date| |
Target Milestone|--- |4.5.0
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43475