]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
(expand_expr, case PLACEHOLDER_EXPR): Find innermost matching and
authorRichard Kenner <kenner@gcc.gnu.org>
Sat, 2 Aug 1997 12:01:10 +0000 (08:01 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Sat, 2 Aug 1997 12:01:10 +0000 (08:01 -0400)
don't check contains_placeholder_p.

From-SVN: r14605

gcc/expr.c

index 41deddfd2c0c5a0553598e7ac57eb49137a47b73..9f5ad573792c6ebc178fbbed3bccf8c4586d02d2 100644 (file)
@@ -5023,36 +5023,28 @@ expand_expr (exp, target, tmode, modifier)
          tree old_list = placeholder_list;
          tree elt;
 
-         /* See if the object is the type that we want and does not contain
-            this PLACEHOLDER_EXPR itself.  Then see if the operand of any
-            reference is the type we want.  */
+         /* See if the object is the type that we want.  */
          if ((TYPE_MAIN_VARIANT (TREE_TYPE (TREE_PURPOSE (placeholder_list)))
-              == need_type)
-             && (! contains_this_placeholder_p
-                 (TREE_PURPOSE (placeholder_list), exp)))
+              == need_type))
            object = TREE_PURPOSE (placeholder_list);
 
-         else
-           /* Find the outermost reference that is of the type we want and
-              that does not itself contain this PLACEHOLDER_EXPR.  */
-           for (elt = TREE_PURPOSE (placeholder_list);
-                elt != 0
-                && (TREE_CODE_CLASS (TREE_CODE (elt)) == 'r'
-                    || TREE_CODE_CLASS (TREE_CODE (elt)) == '1'
-                    || TREE_CODE_CLASS (TREE_CODE (elt)) == '2'
-                    || TREE_CODE_CLASS (TREE_CODE (elt)) == 'e');
-                elt = ((TREE_CODE (elt) == COMPOUND_EXPR
-                        || TREE_CODE (elt) == COND_EXPR)
-                       ? TREE_OPERAND (elt, 1) : TREE_OPERAND (elt, 0)))
-             if (TREE_CODE_CLASS (TREE_CODE (elt)) == 'r'
-                 && (TYPE_MAIN_VARIANT (TREE_TYPE (TREE_OPERAND (elt, 0)))
-                     == need_type)
-                 && ! contains_this_placeholder_p (TREE_OPERAND (elt, 0),
-                                                   exp))
-               {
-                 object = TREE_OPERAND (elt, 0);
-                 break;
-               }
+         /* Find the innermost reference that is of the type we want.  */
+         for (elt = TREE_PURPOSE (placeholder_list);
+              elt != 0
+              && (TREE_CODE_CLASS (TREE_CODE (elt)) == 'r'
+                  || TREE_CODE_CLASS (TREE_CODE (elt)) == '1'
+                  || TREE_CODE_CLASS (TREE_CODE (elt)) == '2'
+                  || TREE_CODE_CLASS (TREE_CODE (elt)) == 'e');
+              elt = ((TREE_CODE (elt) == COMPOUND_EXPR
+                      || TREE_CODE (elt) == COND_EXPR)
+                     ? TREE_OPERAND (elt, 1) : TREE_OPERAND (elt, 0)))
+           if (TREE_CODE_CLASS (TREE_CODE (elt)) == 'r'
+               && (TYPE_MAIN_VARIANT (TREE_TYPE (TREE_OPERAND (elt, 0)))
+                   == need_type))
+             {
+               object = TREE_OPERAND (elt, 0);
+               break;
+             }
 
          if (object != 0)
            {