diff --git a/gcc/ChangeLog b/gcc/ChangeLog index baf82575663..d5c3c8e35e6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ Wed Oct 22 00:34:12 1997 Jeffrey A Law (law@cygnus.com) + * local-alloc.c (block_alloc): Don't lose if two SCRATCH expressions + are shared. + * rs6000.md (*movsi_got_internal_mem): New pattern. (*movsi_got_internal_mem splitter): New define_split. diff --git a/gcc/local-alloc.c b/gcc/local-alloc.c index 7a3e103c6bf..ce7b4b9f405 100644 --- a/gcc/local-alloc.c +++ b/gcc/local-alloc.c @@ -1714,17 +1714,12 @@ block_alloc (b) { if (GET_CODE (qty_scratch_rtx[q]) == REG) abort (); - PUT_CODE (qty_scratch_rtx[q], REG); - REGNO (qty_scratch_rtx[q]) = qty_phys_reg[q]; + + qty_scratch_rtx[q] = gen_rtx (REG, GET_MODE (qty_scratch_rtx[q]), + qty_phys_reg[q]); scratch_block[scratch_index] = b; scratch_list[scratch_index++] = qty_scratch_rtx[q]; - - /* Must clear the USED field, because it will have been set by - copy_rtx_if_shared, but the leaf_register code expects that - it is zero in all REG rtx. copy_rtx_if_shared does not set the - used bit for REGs, but does for SCRATCHes. */ - qty_scratch_rtx[q]->used = 0; } } }