This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
porting problem again: ICE in add_clobbers
- From: "Tomas Svensson" <idulus at gmail dot com>
- To: gcc at gcc dot gnu dot org
- Date: Tue, 18 Sep 2007 12:54:17 +0200
- Subject: porting problem again: ICE in add_clobbers
I am still porting gcc v4.1.2 to a new risc architecture, and this
time my problem is that when compiling with -O2 turned on, every insn
with a (use ..) side effect expression, eg.
(define_expand "sibcall"
[(parallel [(call (match_operand 0 "" "")
(match_operand 1 "" ""))
(use (match_operand 2 "" ""))
(use (match_operand 3 "" ""))])]
"TARGET_SIBCALL"
{
if (operands[3] == NULL_RTX)
operands[3] = const0_rtx;
internal_expand_sibcall (0, XEXP (operands[0], 0), operands[1]);
DONE;
})
causes the compiler to fail with an internal compiler error in add_clobbers.
I have looked at it in gdb and it fails on reaching the
gcc_unreachable() in add_clobbers, which happens because add_clobbers
is called (at combine.c:9576) with an insn_code_number that it does
not recognize.
Everything works fine when optimization is turned off. What is it that
gcc does differently when optimizing, that might cause this to happen?