diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/local-alloc.c | 8 |
2 files changed, 13 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9140a29..51ac122 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2002-05-17 David S. Miller <davem@redhat.com> + + PR c/6689, PR optimization/6615 + * local-alloc.c (struct equivalence): Rename 'src' to 'src_p' + and make it a pointer to rtx. Update comments. + (update_equiv_regs): When scanning for equivalences, record + address of SET_SRC (set) in reg_equiv[].src_p. Dereference + it while making the equiv replacements. + 2002-05-17 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE> * config/sparc/sparc.c (sparc_aout_select_section): Fixed typo. diff --git a/gcc/local-alloc.c b/gcc/local-alloc.c index cd216f9..d4aa8bb 100644 --- a/gcc/local-alloc.c +++ b/gcc/local-alloc.c @@ -245,7 +245,7 @@ static rtx this_insn; struct equivalence { /* Set when an attempt should be made to replace a register - with the associated src entry. */ + with the associated src_p entry. */ char replace; @@ -255,7 +255,7 @@ struct equivalence rtx replacement; - rtx src; + rtx *src_p; /* Loop depth is used to recognize equivalences which appear to be present within the same loop (or in an inner loop). */ @@ -1005,7 +1005,7 @@ update_equiv_regs () recorded_label_ref = 1; reg_equiv[regno].replacement = XEXP (note, 0); - reg_equiv[regno].src = src; + reg_equiv[regno].src_p = &SET_SRC (set); reg_equiv[regno].loop_depth = loop_depth; /* Don't mess with things live during setjmp. */ @@ -1087,7 +1087,7 @@ update_equiv_regs () if (asm_noperands (PATTERN (equiv_insn)) < 0 && validate_replace_rtx (regno_reg_rtx[regno], - reg_equiv[regno].src, insn)) + *(reg_equiv[regno].src_p), insn)) { rtx equiv_link; rtx last_link; |