diff mbox series

Fix availability of functions in other partitions

Message ID 20200917104304.GB91738@kam.mff.cuni.cz
State New
Headers show
Series Fix availability of functions in other partitions | expand

Commit Message

Jan Hubicka Sept. 17, 2020, 10:43 a.m. UTC
Hi,
this patch fixes rather old bug that prevents ipa-reference to wrok
across partition boundary.  What happens is that availability code
thinks that function is not available and thus we ignore the summary we
stream.

Bootstrapped/regtested x86_64-linux. Comitted.

I have a testcase that I will sent with additional changes.

	* cgraph.c (cgraph_node::get_availability): Fix availability of
	functions in other partitions
	* varpool.c (varpool_node::get_availability): Likewise.
diff mbox series

Patch

diff --git a/gcc/cgraph.c b/gcc/cgraph.c
index c0b45795059..b43adaac7c0 100644
--- a/gcc/cgraph.c
+++ b/gcc/cgraph.c
@@ -2360,7 +2360,7 @@  cgraph_node::get_availability (symtab_node *ref)
 	ref = cref->inlined_to;
     }
   enum availability avail;
-  if (!analyzed)
+  if (!analyzed && !in_other_partition)
     avail = AVAIL_NOT_AVAILABLE;
   else if (local)
     avail = AVAIL_LOCAL;
diff --git a/gcc/predict.def b/gcc/predict.def
index 2d8d4958b6d..d8e502152b8 100644
diff --git a/gcc/varpool.c b/gcc/varpool.c
index 458cdf1bf37..31ea2132331 100644
--- a/gcc/varpool.c
+++ b/gcc/varpool.c
@@ -479,7 +479,7 @@  varpool_node::add (tree decl)
 enum availability
 varpool_node::get_availability (symtab_node *ref)
 {
-  if (!definition)
+  if (!definition && !in_other_partition)
     return AVAIL_NOT_AVAILABLE;
   if (!TREE_PUBLIC (decl))
     return AVAIL_AVAILABLE;