Optimize handling of inline summaries

Martin Liška mliska@suse.cz
Mon Nov 4 14:33:00 GMT 2019


On 11/4/19 3:12 PM, Jan Hubicka wrote:
> Martin, do you know why this flag was introduced?

Hi.

The flag is used in IPA CP:

call_summary <edge_clone_summary *>

class edge_clone_summary
{
...
   cgraph_edge *prev_clone;
   cgraph_edge *next_clone;
}

Apparently, IPA CP links all clones in one linked link. If you disable it:
diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c
index 8a5f8d362f6..270e2e047a1 100644
--- a/gcc/ipa-cp.c
+++ b/gcc/ipa-cp.c
@@ -3461,7 +3461,7 @@ public:
    edge_clone_summary_t (symbol_table *symtab):
      call_summary <edge_clone_summary *> (symtab)
      {
-      m_initialize_when_cloning = true;
+//      m_initialize_when_cloning = true;
      }
  
    virtual void duplicate (cgraph_edge *src_edge, cgraph_edge *dst_edge,

You'll see following fallout:
FAIL: gcc.dg/ipa/ipcp-2.c scan-ipa-dump-times cp "Creating a specialized node of foo" 1
FAIL: gcc.dg/ipa/ipcp-2.c scan-ipa-dump-times cp "replacing param .. p with const 0" 3
FAIL: gcc.dg/ipa/ipcp-2.c scan-ipa-dump cp "replacing param .0 s with const 4"
FAIL: gcc.dg/ipa/ipcp-agg-5.c scan-tree-dump-not optimized "->c;"
FAIL: gcc.dg/ipa/ipa-5.c scan-ipa-dump-times cp "Creating a specialized node" 3
FAIL: gcc.dg/ipa/ipcp-agg-6.c scan-ipa-dump-times cp "Creating a specialized node of foo/[0-9]*\\." 2
FAIL: gcc.dg/ipa/ipcp-agg-6.c scan-ipa-dump-times cp "Aggregate replacements:" 10
FAIL: gcc.dg/ipa/ipcp-agg-6.c scan-tree-dump-not optimized "->c;"
FAIL: gcc.dg/ipa/ipcp-cstagg-2.c scan-ipa-dump cp "Discovered an indirect call to a known target"

But yes, by default we should not enable the m_initialize_when_cloning flag.

Martin






More information about the Gcc-patches mailing list