function.c (purge_addressof_1): Remove the duplicate if (code == SET) block.
authorZack Weinberg <zackw@stanford.edu>
Fri, 27 Apr 2001 23:55:03 +0000 (23:55 +0000)
committerZack Weinberg <zack@gcc.gnu.org>
Fri, 27 Apr 2001 23:55:03 +0000 (23:55 +0000)
* function.c (purge_addressof_1): Remove the duplicate
if (code == SET) block.  Fold the two if (code == ADDRESSOF)
blocks together.

From-SVN: r41649

gcc/ChangeLog
gcc/function.c

index f6baaabc86554bf4ff53bbfc64ed7160ff137a9a..08224fcd4bc212fbf885cec8de8c7616ff08a679 100644 (file)
@@ -1,3 +1,9 @@
+2001-04-27  Zack Weinberg  <zackw@stanford.edu>
+
+       * function.c (purge_addressof_1): Remove the duplicate
+       if (code == SET) block.  Fold the two if (code == ADDRESSOF)
+       blocks together.
+
 2001-04-28  Jason Merrill  <jason_merrill@redhat.com>
 
        * except.c (expand_eh_region_start): Don't start a new block.
index 482e3ef089da51f6b2d7cd8cdec4eba1de6f14f4..c2727047e2d171c5a09477c76228e941c22072a0 100644 (file)
@@ -2991,14 +2991,19 @@ purge_addressof_1 (loc, insn, force, store, ht)
       result &= purge_addressof_1 (&SET_SRC (x), insn, force, 0, ht);
       return result;
     }
-
-  else if (code == ADDRESSOF && GET_CODE (XEXP (x, 0)) == MEM)
+  else if (code == ADDRESSOF)
     {
+      rtx sub, insns;
+
+      if (GET_CODE (XEXP (x, 0)) != MEM)
+       {
+         put_addressof_into_stack (x, ht);
+         return true;
+       }
+         
       /* We must create a copy of the rtx because it was created by
         overwriting a REG rtx which is always shared.  */
-      rtx sub = copy_rtx (XEXP (XEXP (x, 0), 0));
-      rtx insns;
-
+      sub = copy_rtx (XEXP (XEXP (x, 0), 0));
       if (validate_change (insn, loc, sub, 0)
          || validate_replace_rtx (x, sub, insn))
        return true;
@@ -3210,22 +3215,9 @@ purge_addressof_1 (loc, insn, force, store, ht)
            }
          goto restart;
        }
-    give_up:;
-      /* else give up and put it into the stack */
-    }
-
-  else if (code == ADDRESSOF)
-    {
-      put_addressof_into_stack (x, ht);
-      return true;
-    }
-  else if (code == SET)
-    {
-      result = purge_addressof_1 (&SET_DEST (x), insn, force, 1, ht);
-      result &= purge_addressof_1 (&SET_SRC (x), insn, force, 0, ht);
-      return result;
     }
 
+ give_up:
   /* Scan all subexpressions.  */
   fmt = GET_RTX_FORMAT (code);
   for (i = 0; i < GET_RTX_LENGTH (code); i++, fmt++)