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; }