------- Comment #2 from mueller at gcc dot gnu dot org 2007-11-16 11:37 ------- workaround:
--- reg-stack.c (revision 130198) +++ reg-stack.c (working copy) @@ -925,7 +925,7 @@ swap_to_top (rtx insn, stack regstack, r /* Place operand 1 at the top of stack. */ regno = get_hard_regnum (&temp_stack, src1); gcc_assert (regno >= 0); - if (regno != FIRST_STACK_REG) + if (regno >= 0 && regno != FIRST_STACK_REG) { k = temp_stack.top - (regno - FIRST_STACK_REG); j = temp_stack.top; @@ -938,7 +938,7 @@ swap_to_top (rtx insn, stack regstack, r /* Place operand 2 next on the stack. */ regno = get_hard_regnum (&temp_stack, src2); gcc_assert (regno >= 0); - if (regno != FIRST_STACK_REG + 1) + if (regno >= 0 && regno != FIRST_STACK_REG + 1) { k = temp_stack.top - (regno - FIRST_STACK_REG); j = temp_stack.top - 1; -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34110