https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83506

--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Though, I guess the real bug is that ipa_free_fn_summary (); is no longer
called for -fno-ipa-pure-const.  While the ipa_inline pass had unconditional
gate and so it was freed always if !flag_wpa, ipa-pure-const has a non-trivial
gate and thus it frees only sometimes.  Calling ipa_free_fn_summary () in
ipa-inline.c if if (!flag_wpa && !flag_ipa_pure_const && !in_lto_p) is not
nice, as it duplicates the ipa-pure-const.c gate.  So, we can do something
like:
--- gcc/ipa.c.jj        2017-09-01 09:26:37.000000000 +0200
+++ gcc/ipa.c   2017-12-20 11:22:57.915226765 +0100
@@ -1270,6 +1270,11 @@ ipa_single_use (void)
   varpool_node *var;
   hash_map<varpool_node *, cgraph_node *> single_user_map;

+  /* In WPA we use inline summaries for partitioning process.  Otherwise,
+     free it if earlier IPA passes have not done so yet.  */
+  if (!flag_wpa)
+    ipa_free_fn_summary ();
+
   FOR_EACH_DEFINED_VARIABLE (var)
     if (!var->all_refs_explicit_p ())
       var->aux = BOTTOM;
But I think I have a cleaner patch than that.

Reply via email to