(expand_expr, case PLACEHOLDER_EXPR): Consider two types identical if
authorRichard Kenner <kenner@gcc.gnu.org>
Tue, 6 Jun 1995 22:55:28 +0000 (18:55 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Tue, 6 Jun 1995 22:55:28 +0000 (18:55 -0400)
their TYPE_MAIN_VARIANTs are the same.

From-SVN: r9897

gcc/expr.c

index d4fc8fe8176c1ed78e49644aa66d69d0db780719..1bf40c8ce8855d4b36369337b69054e46a48dfa0 100644 (file)
@@ -4366,7 +4366,8 @@ expand_expr (exp, target, tmode, modifier)
          tree old_list = placeholder_list;
 
          for (object = TREE_PURPOSE (placeholder_list);
-              TREE_TYPE (object) != type
+              (TYPE_MAIN_VARIANT (TREE_TYPE (object))
+               != TYPE_MAIN_VARIANT (type))
               && (TREE_CODE_CLASS (TREE_CODE (object)) == 'r'
                   || TREE_CODE_CLASS (TREE_CODE (object)) == '1'
                   || TREE_CODE_CLASS (TREE_CODE (object)) == '2'
@@ -4374,7 +4375,9 @@ expand_expr (exp, target, tmode, modifier)
               object = TREE_OPERAND (object, 0))
            ;
 
-         if (object && TREE_TYPE (object) == type)
+         if (object != 0
+             && (TYPE_MAIN_VARIANT (TREE_TYPE (object))
+                 == TYPE_MAIN_VARIANT (type)))
            {
              /* Expand this object skipping the list entries before
                 it was found in case it is also a PLACEHOLDER_EXPR.