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?

Reply via email to