ipa: ICF should check SSA_NAME_IS_DEFAULT_DEF
PR ipa/100600 gcc/ChangeLog: * ipa-icf-gimple.c (func_checker::compare_ssa_name): Do not consider equal SSA_NAMEs when one is a param. gcc/testsuite/ChangeLog: * gcc.dg/ipa/pr100600.c: New test.
This commit is contained in:
parent
faf2b6bc52
commit
b0de3ad262
|
@ -96,6 +96,9 @@ func_checker::compare_ssa_name (const_tree t1, const_tree t2)
|
|||
unsigned i1 = SSA_NAME_VERSION (t1);
|
||||
unsigned i2 = SSA_NAME_VERSION (t2);
|
||||
|
||||
if (SSA_NAME_IS_DEFAULT_DEF (t1) != SSA_NAME_IS_DEFAULT_DEF (t2))
|
||||
return false;
|
||||
|
||||
if (m_source_ssa_names[i1] == -1)
|
||||
m_source_ssa_names[i1] = i2;
|
||||
else if (m_source_ssa_names[i1] != (int) i2)
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
/* PR ipa/100600 */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2" } */
|
||||
|
||||
int a, b, c;
|
||||
long d(long x, long e, long f, long g) {
|
||||
long h, i;
|
||||
for (; h < e; h++) {
|
||||
i = f;
|
||||
for (; i < g; i++)
|
||||
c = b + a;
|
||||
}
|
||||
return h + i;
|
||||
}
|
||||
|
||||
long j(long x, long e, long y, long g) {
|
||||
long h, i;
|
||||
for (; h < e; h++)
|
||||
for (; i < g; i++)
|
||||
c = b + a;
|
||||
return h + i;
|
||||
}
|
Loading…
Reference in New Issue