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