* alias.c (alias_set_subset_of, alias_sets_must_conflict_p)
authorJan Hubicka <hubicka@ucw.cz>
Thu, 3 Dec 2015 21:57:15 +0000 (22:57 +0100)
committerJan Hubicka <hubicka@gcc.gnu.org>
Thu, 3 Dec 2015 21:57:15 +0000 (21:57 +0000)
Short circuit for !flag_strict_aliasing
(get_alias_set): Remove flag_strict_aliasing check.
(new_alias_set): Likewise.

From-SVN: r231239

gcc/ChangeLog
gcc/alias.c

index 8a7a4ec04f7b79d2be66239eb899181ea40c3253..900119a765a29dfc95b5812fdd59776b3b4cdbb4 100644 (file)
@@ -1,3 +1,10 @@
+2015-12-03  Jan Hubicka  <hubicka@ucw.cz>
+
+       * alias.c (alias_set_subset_of, alias_sets_must_conflict_p)
+       Short circuit for !flag_strict_aliasing
+       (get_alias_set): Remove flag_strict_aliasing check.
+       (new_alias_set): Likewise.
+
 2015-12-03  Evandro Menezes  <e.menezes@samsung.com>
 
        * config/aarch64/aarch64-cores.def: Use the Exynos M1 cost model.
index 9a642dde03e6f8925608f5d5ec52d4d6cd0f4444..66aedcef4c904e21836cf91c6223852bb17213f8 100644 (file)
@@ -405,6 +405,10 @@ alias_set_subset_of (alias_set_type set1, alias_set_type set2)
 {
   alias_set_entry *ase2;
 
+  /* Disable TBAA oracle with !flag_strict_aliasing.  */
+  if (!flag_strict_aliasing)
+    return true;
+
   /* Everything is a subset of the "aliases everything" set.  */
   if (set2 == 0)
     return true;
@@ -537,6 +541,9 @@ alias_sets_conflict_p (alias_set_type set1, alias_set_type set2)
 int
 alias_sets_must_conflict_p (alias_set_type set1, alias_set_type set2)
 {
+  /* Disable TBAA oracle with !flag_strict_aliasing.  */
+  if (!flag_strict_aliasing)
+    return 1;
   if (set1 == 0 || set2 == 0)
     {
       ++alias_stats.num_alias_zero;
@@ -816,10 +823,12 @@ get_alias_set (tree t)
 {
   alias_set_type set;
 
-  /* If we're not doing any alias analysis, just assume everything
-     aliases everything else.  Also return 0 if this or its type is
-     an error.  */
-  if (! flag_strict_aliasing || t == error_mark_node
+  /* We can not give up with -fno-strict-aliasing because we need to build
+     proper type representation for possible functions which are build with
+     -fstirct-aliasing.  */
+
+  /* return 0 if this or its type is an error.  */
+  if (t == error_mark_node
       || (! TYPE_P (t)
          && (TREE_TYPE (t) == 0 || TREE_TYPE (t) == error_mark_node)))
     return 0;
@@ -1085,15 +1094,10 @@ get_alias_set (tree t)
 alias_set_type
 new_alias_set (void)
 {
-  if (flag_strict_aliasing)
-    {
-      if (alias_sets == 0)
-       vec_safe_push (alias_sets, (alias_set_entry *) NULL);
-      vec_safe_push (alias_sets, (alias_set_entry *) NULL);
-      return alias_sets->length () - 1;
-    }
-  else
-    return 0;
+  if (alias_sets == 0)
+    vec_safe_push (alias_sets, (alias_set_entry *) NULL);
+  vec_safe_push (alias_sets, (alias_set_entry *) NULL);
+  return alias_sets->length () - 1;
 }
 
 /* Indicate that things in SUBSET can alias things in SUPERSET, but that