On 04/08/2014 10:41 AM, Jakub Jelinek wrote: > On Tue, Apr 08, 2014 at 10:26:30AM +0200, Richard Biener wrote: >> On Mon, Apr 7, 2014 at 6:22 PM, Andreas Krebbel >> <kreb...@linux.vnet.ibm.com> wrote: >>> On Mon, Apr 07, 2014 at 04:19:06PM +0200, Richard Biener wrote: >>>> The adjusted testcases now fail on x86_64/i?86 at least. See PR60776. >>> >>> They seem to require at least -O2 on x86 with that change. Ok to apply? >> >> Hmm, they passed before your change. Do you mean that this was >> by accident (and only because of the special return value)? If so then >> the patch is ok. > > The reason why it worked with the if ... return 1; else return 0; case is > that in that case it has already been expanded as store flag insn and thus > in that case ce1 pass didn't discover the conditional move there, thus no > dead code waiting to be eliminated after ce1 and still present during > combine pass. > > Another alternative for -O2 would be -O -fno-if-conversion I guess.
I could also revert the testcase changes and add -mbranch-cost=2 for s390?! > > OT, when touching the testcase, I'd say it would be better if you've > converted it to single dg-options + /* { dg-additional-options "-march=z900" > { target s390*-*-* } } */ Ok. Bye, -Andreas- > >>> --- a/gcc/testsuite/gcc.dg/builtin-bswap-6.c >>> +++ b/gcc/testsuite/gcc.dg/builtin-bswap-6.c >>> @@ -1,7 +1,7 @@ >>> /* { dg-do compile { target arm*-*-* alpha*-*-* i?86-*-* powerpc*-*-* >>> rs6000-*-* x86_64-*-* s390*-*-* } } */ >>> /* { dg-require-effective-target stdint_types } */ >>> -/* { dg-options "-O -fdump-rtl-combine" } */ >>> -/* { dg-options "-O -fdump-rtl-combine -march=z900" { target s390-*-* } } >>> */ >>> +/* { dg-options "-O2 -fdump-rtl-combine" } */ >>> +/* { dg-options "-O2 -fdump-rtl-combine -march=z900" { target s390-*-* } } >>> */ >>> >>> /* The test intentionally returns 1/2 instead of the obvious 0/1 to >>> prevent GCC from calculating the return value with arithmetic >>> diff --git a/gcc/testsuite/gcc.dg/builtin-bswap-7.c >>> b/gcc/testsuite/gcc.dg/builtin-bswap-7.c >>> index 0eecdd8..98529f2 100644 >>> --- a/gcc/testsuite/gcc.dg/builtin-bswap-7.c >>> +++ b/gcc/testsuite/gcc.dg/builtin-bswap-7.c >>> @@ -1,7 +1,7 @@ >>> /* { dg-do compile { target arm*-*-* alpha*-*-* ia64*-*-* x86_64-*-* >>> s390x-*-* powerpc*-*-* rs6000-*-* } } */ >>> /* { dg-require-effective-target stdint_types } */ >>> /* { dg-require-effective-target lp64 } */ >>> -/* { dg-options "-O -fdump-rtl-combine" } */ >>> +/* { dg-options "-O2 -fdump-rtl-combine" } */ >>> >>> /* The test intentionally returns 1/2 instead of the obvious 0/1 to >>> prevent GCC from calculating the return value with arithmetic >>> > > Jakub >