PR c/6689, PR optimization/6615
authorDavid S. Miller <davem@redhat.com>
Fri, 17 May 2002 17:01:06 +0000 (10:01 -0700)
committerDavid S. Miller <davem@gcc.gnu.org>
Fri, 17 May 2002 17:01:06 +0000 (10:01 -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: r53561

gcc/ChangeLog
gcc/local-alloc.c

index 9140a298da0fb3a0979e28943f994b365ca88fba..51ac12203e0a610af773929b66dd931f2f8c546d 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  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
 
        * config/sparc/sparc.c (sparc_aout_select_section): Fixed typo.
index cd216f96d0f6c28f2a97bbc571d828c2a7c105d5..d4aa8bbdb6548153afaced6eb5b4b550b19b8892 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).  */
@@ -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;