OSDN Git Service

(expand_expr): Finish Tue Aug 18 23:07:33 1992 change. It
authorrms <rms@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 24 May 1993 19:26:25 +0000 (19:26 +0000)
committerrms <rms@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 24 May 1993 19:26:25 +0000 (19:26 +0000)
didn't handle the target != 0 case, now it does.

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

gcc/expr.c

index a382737..08b2078 100644 (file)
@@ -5098,6 +5098,18 @@ expand_expr (exp, target, tmode, modifier)
               is the actual stack address that we want to initialize.
               The function we call will perform the cleanup in this case.  */
 
+           /* If we have already assigned it space, use that space,
+              not target that we were passed in, as our target
+              parameter is only a hint.  */
+           if (DECL_RTL (slot) != 0)
+              {
+                target = DECL_RTL (slot);
+                /* If we have already expanded the slot, so don't do
+                   it again.  (mrs)  */
+                if (TREE_OPERAND (exp, 1) == NULL_TREE)
+                  return target;
+             }
+
            DECL_RTL (slot) = target;
          }