]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
PR c/6689, PR optimization/6615
authorDavid S. Miller <davem@redhat.com>
Fri, 17 May 2002 16:58:03 +0000 (09:58 -0700)
committerDavid S. Miller <davem@gcc.gnu.org>
Fri, 17 May 2002 16:58:03 +0000 (09:58 -0700)
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.

From-SVN: r53560

gcc/ChangeLog
gcc/local-alloc.c

index bc680343ffb1eaf6414846d4bfa154a5698cf020..b57b910e271f161ebd5233acd52ba5af30303f7d 100644 (file)
@@ -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  Kurt Wall <kwall@kurtwerks.com>
 
        * doc/install.texi (Testing): Mention two common DejaGnu warnings
index c11398f843691fb39434956448fec717b923ab85..05d0bde6c893b1042fa340baa7bcd7c7ad686bc5 100644 (file)
@@ -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).  */
@@ -1004,7 +1004,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.  */
@@ -1086,7 +1086,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;