ipa/94947 - avoid using externally_visible_p ()
authorRichard Biener <rguenther@suse.de>
Thu, 7 May 2020 12:06:02 +0000 (14:06 +0200)
committerRichard Biener <rguenther@suse.de>
Thu, 7 May 2020 17:42:22 +0000 (19:42 +0200)
externally_visible_p wasn't the correct predicate to use (even if it
worked), instead we should use DECL_EXTERNAL || TREE_PUBLIC.

2020-05-07  Richard Biener  <rguenther@suse.de>

PR ipa/94947
* tree-ssa-structalias.c (refered_from_nonlocal_fn): Use
DECL_EXTERNAL || TREE_PUBLIC instead of externally_visible.
(refered_from_nonlocal_var): Likewise.
(ipa_pta_execute): Likewise.

gcc/ChangeLog
gcc/tree-ssa-structalias.c

index f59940c67391d9797fce83778c0d18c3c619776e..938fa61590542175fc145855fee051aee2ce2fb3 100644 (file)
@@ -1,3 +1,11 @@
+2020-05-07  Richard Biener  <rguenther@suse.de>
+
+       PR ipa/94947
+       * tree-ssa-structalias.c (refered_from_nonlocal_fn): Use
+       DECL_EXTERNAL || TREE_PUBLIC instead of externally_visible.
+       (refered_from_nonlocal_var): Likewise.
+       (ipa_pta_execute): Likewise.
+
 2020-05-07  Erick Ochoa <erick.ochoa@theobroma-systems.com>
 
        * gcc/tree-ssa-struct-alias.c: Fix comments
index b37808c8fd4f6e0da609a1411c2a751eb922046a..44fe52e0f6579e26b207e361a15eb7cc99692946 100644 (file)
@@ -8085,7 +8085,8 @@ refered_from_nonlocal_fn (struct cgraph_node *node, void *data)
 {
   bool *nonlocal_p = (bool *)data;
   *nonlocal_p |= (node->used_from_other_partition
-                 || node->externally_visible
+                 || DECL_EXTERNAL (node->decl)
+                 || TREE_PUBLIC (node->decl)
                  || node->force_output
                  || lookup_attribute ("noipa", DECL_ATTRIBUTES (node->decl)));
   return false;
@@ -8097,7 +8098,8 @@ refered_from_nonlocal_var (struct varpool_node *node, void *data)
 {
   bool *nonlocal_p = (bool *)data;
   *nonlocal_p |= (node->used_from_other_partition
-                 || node->externally_visible_p ()
+                 || DECL_EXTERNAL (node->decl)
+                 || TREE_PUBLIC (node->decl)
                  || node->force_output);
   return false;
 }
@@ -8146,7 +8148,8 @@ ipa_pta_execute (void)
         For local functions we see all callers and thus do not need initial
         constraints for parameters.  */
       bool nonlocal_p = (node->used_from_other_partition
-                        || node->externally_visible
+                        || DECL_EXTERNAL (node->decl)
+                        || TREE_PUBLIC (node->decl)
                         || node->force_output
                         || lookup_attribute ("noipa",
                                              DECL_ATTRIBUTES (node->decl)));
@@ -8187,7 +8190,8 @@ ipa_pta_execute (void)
 
       /* For the purpose of IPA PTA unit-local globals are not
          escape points.  */
-      bool nonlocal_p = (var->externally_visible_p ()
+      bool nonlocal_p = (DECL_EXTERNAL (var->decl)
+                        || TREE_PUBLIC (var->decl)
                         || var->used_from_other_partition
                         || var->force_output);
       var->call_for_symbol_and_aliases (refered_from_nonlocal_var,