From: Jan Hubicka Date: Thu, 3 Dec 2015 21:57:15 +0000 (+0100) Subject: * alias.c (alias_set_subset_of, alias_sets_must_conflict_p) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=bd04cddf10ff455c6798a4c6ee7bc6533ccf9391;p=gcc.git * 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. From-SVN: r231239 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8a7a4ec04f7..900119a765a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2015-12-03 Jan Hubicka + + * 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 * config/aarch64/aarch64-cores.def: Use the Exynos M1 cost model. diff --git a/gcc/alias.c b/gcc/alias.c index 9a642dde03e..66aedcef4c9 100644 --- a/gcc/alias.c +++ b/gcc/alias.c @@ -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