aboutsummaryrefslogtreecommitdiff
path: root/gcc/local-alloc.c
diff options
context:
space:
mode:
authorJeffrey A Law <law@cygnus.com>1997-10-22 15:58:33 +0000
committerJeff Law <law@gcc.gnu.org>1997-10-22 09:58:33 -0600
commit0bd83abd44afe09f841905c2b77e726eecfe016b (patch)
treed3e4ff1446320645e119745a87b3cd8285cea617 /gcc/local-alloc.c
parentb22b9b3ef27313822b3e3b05d40be84b7d365d5b (diff)
downloadgcc-0bd83abd44afe09f841905c2b77e726eecfe016b.zip
gcc-0bd83abd44afe09f841905c2b77e726eecfe016b.tar.gz
gcc-0bd83abd44afe09f841905c2b77e726eecfe016b.tar.bz2
local-alloc.c (block_alloc): Don't lose if two SCRATCH expressions are shared.
* local-alloc.c (block_alloc): Don't lose if two SCRATCH expressions are shared. From-SVN: r16147
Diffstat (limited to 'gcc/local-alloc.c')
-rw-r--r--gcc/local-alloc.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/gcc/local-alloc.c b/gcc/local-alloc.c
index 7a3e103..ce7b4b9 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;
}
}
}