OSDN Git Service

* function.c (purge_addressof_1): Remove the duplicate
authorzack <zack@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 27 Apr 2001 23:55:03 +0000 (23:55 +0000)
committerzack <zack@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 27 Apr 2001 23:55:03 +0000 (23:55 +0000)
if (code == SET) block.  Fold the two if (code == ADDRESSOF)
blocks together.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@41649 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/function.c

index f6baaab..08224fc 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 482e3ef..c272704 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++)