g++.mike/net16.C
Richard Henderson
rth@cygnus.com
Thu Nov 4 16:39:00 GMT 1999
On Wed, Nov 03, 1999 at 01:24:22PM -0800, Mark Mitchell wrote:
> It looks like this is still failing, even after this patch:
>
> * reg-stack.c (convert_regs_1): Handle EH edges specially.
Blah. I made it work with optimization, but thinko'd the -O0 case.
r~
* reg-stack.c (convert_regs_1): Initialize target_stack->top
after verifying an EH edge.
Index: reg-stack.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/reg-stack.c,v
retrieving revision 1.46
diff -c -p -d -r1.46 reg-stack.c
*** reg-stack.c 1999/11/05 00:35:10 1.46
--- reg-stack.c 1999/11/05 00:36:04
*************** convert_regs_1 (file, block)
*** 2546,2560 ****
HARD_REG_SET tmp;
CLEAR_HARD_REG_SET (tmp);
! GO_IF_HARD_REG_EQUAL (BLOCK_INFO (e->dest)->stack_in.reg_set,
! tmp, eh1);
abort();
eh1:
SET_HARD_REG_BIT (tmp, FIRST_STACK_REG);
! GO_IF_HARD_REG_EQUAL (BLOCK_INFO (e->src)->out_reg_set, tmp, eh2);
abort();
! eh2:;
}
/* It is better to output directly to the end of the block
--- 2546,2561 ----
HARD_REG_SET tmp;
CLEAR_HARD_REG_SET (tmp);
! GO_IF_HARD_REG_EQUAL (target_stack->reg_set, tmp, eh1);
abort();
eh1:
SET_HARD_REG_BIT (tmp, FIRST_STACK_REG);
! GO_IF_HARD_REG_EQUAL (regstack.reg_set, tmp, eh2);
abort();
! eh2:
!
! target_stack->top = -1;
}
/* It is better to output directly to the end of the block
More information about the Gcc-bugs
mailing list