Strengthen alias_ptr_types_compatible_p in LTO mode.
authorMartin Liska <mliska@suse.cz>
Fri, 9 Aug 2019 12:06:30 +0000 (14:06 +0200)
committerMartin Liska <marxin@gcc.gnu.org>
Fri, 9 Aug 2019 12:06:30 +0000 (12:06 +0000)
2019-08-09  Martin Liska  <mliska@suse.cz>

* alias.c (alias_ptr_types_compatible_p): Strengten
type comparison in LTO mode.

From-SVN: r274235

gcc/ChangeLog
gcc/alias.c

index beffd1b91c0f04c9dcbbfb9bbea11620bd10266b..e9fd0786a465541d21accd0a7bb981ed6288e7b3 100644 (file)
@@ -1,3 +1,8 @@
+2019-08-09  Martin Liska  <mliska@suse.cz>
+
+       * alias.c (alias_ptr_types_compatible_p): Strengten
+       type comparison in LTO mode.
+
 2019-08-09  Richard Sandiford  <richard.sandiford@arm.com>
 
        PR middle-end/90313
index 2755df729070a8b90743f1a4ae74d86b3cc76cc1..1579dfa68a7b16cc6563a5dfe1bdf39cd8a8c9c9 100644 (file)
@@ -793,8 +793,16 @@ alias_ptr_types_compatible_p (tree t1, tree t2)
       || ref_all_alias_ptr_type_p (t2))
     return false;
 
-  return (TYPE_MAIN_VARIANT (TREE_TYPE (t1))
-         == TYPE_MAIN_VARIANT (TREE_TYPE (t2)));
+    /* This function originally abstracts from simply comparing
+       get_deref_alias_set so that we are sure this still computes
+       the same result after LTO type merging is applied.
+       When in LTO type merging is done we can actually do this compare.
+    */
+  if (in_lto_p)
+    return get_deref_alias_set (t1) == get_deref_alias_set (t2);
+  else
+    return (TYPE_MAIN_VARIANT (TREE_TYPE (t1))
+           == TYPE_MAIN_VARIANT (TREE_TYPE (t2)));
 }
 
 /* Create emptry alias set entry.  */