Hi,
the workaround seems to be no longer necessary - it seems that all the
issues was isolated to wrong beaviour of can_be_interposed wrt
partitioned functions.

Honza

        * gimple.c (gimple_call_static_chain_flags): Revert the workaround
        allowing interposition since issues with binds_to_local_def were
        hopefully solved.
diff --git a/gcc/gimple.c b/gcc/gimple.c
index 3d1d3a15b2c..9e65fa61c73 100644
--- a/gcc/gimple.c
+++ b/gcc/gimple.c
@@ -1645,13 +1645,13 @@ gimple_call_static_chain_flags (const gcall *stmt)
       modref_summary *summary = node ? get_modref_function_summary (node)
                                : NULL;
 
+      /* Nested functions should always bind to current def since
+        there is no public ABI for them.  */
+      gcc_checking_assert (node->binds_to_current_def_p ());
       if (summary)
        {
          int modref_flags = summary->static_chain_flags;
 
-         /* ??? Nested functions should always bind to current def.  */
-         if (!node->binds_to_current_def_p ())
-           modref_flags = interposable_eaf_flags (modref_flags, flags);
          if (dbg_cnt (ipa_mod_ref_pta))
            flags |= modref_flags;
        }

Reply via email to