> Hello. > > I added missing gimple_asm_string comparison for a function with an asm > statement. > Bootstrap and regression tests still running, ready for trunk after it > finishes?
OK. (I remember pointing this out at review :)) Honza > > Thank you, > Martin > gcc/ChangeLog: > > 2014-10-19 Martin Liska <mli...@suse.cz> > > * ipa-icf-gimple.c (func_checker::compare_gimple_asm): > Gimple tempate string is compared. > > gcc/testsuite/ChangeLog: > > 2014-10-19 Martin Liska <mli...@suse.cz> > > * gcc.dg/ipa/pr63595.c: New test. > diff --git a/gcc/ipa-icf-gimple.c b/gcc/ipa-icf-gimple.c > index 792a3e4..1369b74 100644 > --- a/gcc/ipa-icf-gimple.c > +++ b/gcc/ipa-icf-gimple.c > @@ -863,6 +863,9 @@ func_checker::compare_gimple_asm (gimple g1, gimple g2) > if (gimple_asm_nclobbers (g1) != gimple_asm_nclobbers (g2)) > return false; > > + if (strcmp (gimple_asm_string (g1), gimple_asm_string (g2)) != 0) > + return return_false_with_msg ("ASM strings are different"); > + > for (unsigned i = 0; i < gimple_asm_ninputs (g1); i++) > { > tree input1 = gimple_asm_input_op (g1, i); > diff --git a/gcc/testsuite/gcc.dg/ipa/pr63595.c > b/gcc/testsuite/gcc.dg/ipa/pr63595.c > new file mode 100644 > index 0000000..9c9f3bf > --- /dev/null > +++ b/gcc/testsuite/gcc.dg/ipa/pr63595.c > @@ -0,0 +1,26 @@ > +/* { dg-do compile } */ > +/* { dg-options "-O2 -fdump-ipa-icf-details" } */ > + > +static int f(int t) __attribute__((noinline)); > + > +static int g(int t) __attribute__((noinline)); > +static int g(int t) > +{ > + asm("addl %0, 1": "+r"(t)); > + return t; > +} > +static int f(int t) > +{ > + asm("addq %0, -1": "+r"(t)); > + return t; > +} > + > + > +int h(int t) > +{ > + return f(t) + g(t); > +} > + > +/* { dg-final { scan-ipa-dump "ASM strings are different" "icf" } } */ > +/* { dg-final { scan-ipa-dump "Equal symbols: 0" "icf" } } */ > +/* { dg-final { cleanup-ipa-dump "icf" } } */