On Tue, Apr 08, 2014 at 11:21:56AM +0200, Andreas Krebbel wrote: > On 04/08/2014 11:12 AM, Jakub Jelinek wrote: > > On Tue, Apr 08, 2014 at 10:53:19AM +0200, Andreas Krebbel wrote: > >> 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?! > > > > That doesn't seem to work (at least for me with cross-compiler to s390x). > > Seems to be -mbranch-cost=0 this time.
Indeed, that works too. Thus, please commit any of these variants, if you go for /* { dg-additional-options "-mbranch-cost=0" { target s390*-*-* } } */ plus reverting your earlier changes, you can also consider addition of two new tests that would contain the return {1,2} and have -O2. Jakub