This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/17643] [3.3/3.4/4.0 Regression] ICE in propagate_one_insn, at flow.c:1582
- 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: 20 Dec 2004 04:36:14 -0000
- Subject: [Bug target/17643] [3.3/3.4/4.0 Regression] ICE in propagate_one_insn, at flow.c:1582
- References: <20040923220428.17643.markus@oberhumer.com>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From danglin at gcc dot gnu dot org 2004-12-20 04:36 -------
Hmmm, why "-mportable-runtime"? This was intended I believe for PA 1.0
chips in embedded applications and isn't used or tested much any more.
I can only duplicate on linux. At the moment, I don't know how this
can happen. We have the following insn when the ICE occurs:
(insn 36 16 37 0 (set (reg:SI 2 %r2)
(mem:SI (plus:SI (reg/f:SI 30 %r30)
(const_int -20 [0xffffffec])) [0 S4 A32])) -1 (nil)
(nil))
(insn 37 36 17 0 (unspec_volatile [
(const_int 2 [0x2])
] 0) -1 (nil)
(nil))
(call_insn/j 17 37 18 0 (parallel [
(set (reg:SI 28 %r28)
(call (mem:SI (reg:SI 22 %r22) [0 S4 A32])
(const_int 16 [0x10])))
(clobber (reg:SI 1 %r1))
(clobber (reg:SI 2 %r2))
(use (const_int 1 [0x1]))
]) 207 {call_val_reg} (insn_list:REG_DEP_ANTI 13 (insn_list:REG_DEP_TRUE
16 (nil)))
(expr_list:REG_DEAD (reg:SI 26 %r26 [ size ])
(expr_list:REG_DEAD (reg:SI 22 %r22)
(expr_list:REG_UNUSED (reg:SI 2 %r2)
(expr_list:REG_UNUSED (reg:SI 1 %r1)
(nil)))))
(expr_list:REG_DEP_TRUE (use (reg:SI 26 %r26 [ size ]))
(nil)))
(barrier 18 17 20)
(note 20 18 33 NOTE_INSN_FUNCTION_END)
(note 33 20 0 NOTE_INSN_DELETED)
$5 = void
Somehow, it looks as if the epilogue has been emitted in the wrong place
(i.e., before insn 17 which is in the body of the function. It looks
to me like this is caused by thread_prologue_and_epilogue_insns treating
insn 17 as a sibling call. The hpux port doesn't allow sibcalls in
the portable runtime.
I think I see how to fix this but I'm still wonder why you would want
to use -mportable-runtime on linux. The call sequences are much less
efficient.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17643