This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Adjust builtin-bswap-6/7
- From: Jakub Jelinek <jakub at redhat dot com>
- To: Richard Biener <richard dot guenther at gmail dot com>
- Cc: Andreas Krebbel <krebbel at linux dot vnet dot ibm dot com>, GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Tue, 8 Apr 2014 10:41:38 +0200
- Subject: Re: [PATCH] Adjust builtin-bswap-6/7
- Authentication-results: sourceware.org; auth=none
- References: <20140404161818 dot GA26795 at bart> <533EF13A dot 8010001 at redhat dot com> <CAFiYyc32Squ0DrZOGKRpsdF--qoxXUM5mgEjeNf_USdgJP+LUQ at mail dot gmail dot com> <20140407162214 dot GA25019 at maggie> <CAFiYyc2AGM9UVmxWi9_rvXfB=1RUV493BG3OCBWTOSg=GN=V0Q at mail dot gmail dot com>
- Reply-to: Jakub Jelinek <jakub at redhat dot com>
On Tue, Apr 08, 2014 at 10:26:30AM +0200, Richard Biener wrote:
> On Mon, Apr 7, 2014 at 6:22 PM, Andreas Krebbel
> <krebbel@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.
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*-*-* } } */
> > --- 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