re PR lto/83954 (LTO: Bogus -Wlto-type-mismatch warning for array of pointer to incom...
authorEric Botcazou <ebotcazou@adacore.com>
Fri, 2 Feb 2018 18:09:32 +0000 (18:09 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Fri, 2 Feb 2018 18:09:32 +0000 (18:09 +0000)
PR lto/83954
* lto-symtab.c (warn_type_compatibility_p): Do not recurse into the
component type of array types with non-aliased component.

From-SVN: r257343

gcc/lto/ChangeLog
gcc/lto/lto-symtab.c

index 7265b760865671dfa378bc275271fe4b66724813..e51fa1cdc58470310219eea9646aed8d07d59424 100644 (file)
@@ -1,3 +1,9 @@
+2018-02-02  Eric Botcazou  <ebotcazou@adacore.com>
+
+       PR lto/83954
+       * lto-symtab.c (warn_type_compatibility_p): Do not recurse into the
+       component type of array types with non-aliased component.
+
 2018-01-30  Jan Hubicka  <hubicka@ucw.cz>
 
        PR lto/83954
index 0508c5e67502dc26e5086a80710e6082e6b2e1ad..4f186aed059e51e896751e9301667b3d04162a28 100644 (file)
@@ -288,9 +288,12 @@ warn_type_compatibility_p (tree prevailing_type, tree type,
        {
           tree t1 = type, t2 = prevailing_type;
 
-         /* Alias sets of arrays are the same as alias sets of the inner
-            types.  */
-         while (TREE_CODE (t1) == ARRAY_TYPE && TREE_CODE (t2) == ARRAY_TYPE)
+         /* Alias sets of arrays with aliased components are the same as alias
+            sets of the inner types.  */
+         while (TREE_CODE (t1) == ARRAY_TYPE
+                && !TYPE_NONALIASED_COMPONENT (t1)
+                && TREE_CODE (t2) == ARRAY_TYPE
+                && !TYPE_NONALIASED_COMPONENT (t2))
            {
              t1 = TREE_TYPE (t1);
              t2 = TREE_TYPE (t2);