From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 42415 invoked by alias); 7 Dec 2018 13:46:49 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 41657 invoked by uid 89); 7 Dec 2018 13:46:49 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-24.4 required=5.0 tests=BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_NUMSUBJECT,LIKELY_SPAM_BODY,SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: foss.arm.com Received: from usa-sjc-mx-foss1.foss.arm.com (HELO foss.arm.com) (217.140.101.70) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 07 Dec 2018 13:46:47 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 4D42615AB; Fri, 7 Dec 2018 05:46:45 -0800 (PST) Received: from e120077-lin.cambridge.arm.com (e120077-lin.cambridge.arm.com [10.2.206.231]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id A6B4F3F5AF; Fri, 7 Dec 2018 05:46:44 -0800 (PST) Subject: Re: [committed] PR testsuite/86540, twiddle for aarch64 To: Jeff Law , gcc-patches References: From: "Richard Earnshaw (lists)" Openpgp: preference=signencrypt Message-ID: Date: Fri, 07 Dec 2018 13:46:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.2.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-SW-Source: 2018-12/txt/msg00450.txt.bz2 On 06/12/2018 15:36, Jeff Law wrote: > > As outlined in the PR, the aarch64 has a non-default value for > CASE_VALUES_THRESHOLD which changes decisions in switch lowering. Those > changes in switch lowering can expose additional jump threads later in > the pipeline which cause heartburn for a couple tests. > > I looked at all the other ports with a non-default value of > CASE_VALUES_THRESHOLD and only aarch64 is high enough to trigger these > changes in behavior on the two relevant tests. So I'm just skipping the > tests that run after switch lowering on aarch64. > > Verified with a cross that these tests now pass. > > Committing to the trunk, > Can't we use a param to force the value back to (near) the default? That would then work even if other targets start changing the default here. R. > Jeff > > > P > > diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog > index 1adb751cd34..0272bbe0605 100644 > --- a/gcc/testsuite/ChangeLog > +++ b/gcc/testsuite/ChangeLog > @@ -1,3 +1,10 @@ > +2018-12-06 Jeff Law > + > + PR testsuite/86540 > + * gcc.dg/tree-ssa/ssa-dom-thread-7.c: Skip the post switch conversion > + tests on aarch64. > + * gcc.dg/tree-ssa/pr77445-2.c: Similarly. > + > 2018-12-06 David Malcolm > > PR c++/85110 > diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr77445-2.c b/gcc/testsuite/gcc.dg/tree-ssa/pr77445-2.c > index eecfc4b195a..c5d567dabdc 100644 > --- a/gcc/testsuite/gcc.dg/tree-ssa/pr77445-2.c > +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr77445-2.c > @@ -118,10 +118,14 @@ enum STATES FMS( u8 **in , u32 *transitions) { > > /* The profile is not updated perfectly because it is inconsitent from > profile estimation stage. But the number of inconsistencies should not > - increase much. */ > + increase much. > + > + aarch64 has the highest CASE_VALUES_THRESHOLD in GCC. It's high enough > + to change decisions in switch expansion which in turn can expose new > + jump threading opportunities. Skip the later tests on aarch64. */ > /* { dg-final { scan-tree-dump "Jumps threaded: 1\[1-9\]" "thread1" } } */ > /* { dg-final { scan-tree-dump-times "Invalid sum" 3 "thread1" } } */ > /* { dg-final { scan-tree-dump-not "not considered" "thread1" } } */ > /* { dg-final { scan-tree-dump-not "not considered" "thread2" } } */ > -/* { dg-final { scan-tree-dump-not "not considered" "thread3" } } */ > -/* { dg-final { scan-tree-dump-not "not considered" "thread4" } } */ > +/* { dg-final { scan-tree-dump-not "not considered" "thread3" { target { ! aarch64*-*-* } } } } */ > +/* { dg-final { scan-tree-dump-not "not considered" "thread4" { target { ! aarch64*-*-* } } } } */ > diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c > index e395de26ec0..f833aa4351d 100644 > --- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c > +++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c > @@ -3,8 +3,11 @@ > /* { dg-final { scan-tree-dump "Jumps threaded: 16" "thread1" } } */ > /* { dg-final { scan-tree-dump "Jumps threaded: 9" "thread2" } } */ > /* { dg-final { scan-tree-dump "Jumps threaded: 1" "dom2" } } */ > -/* { dg-final { scan-tree-dump-not "Jumps threaded" "dom3" } } */ > -/* { dg-final { scan-tree-dump-not "Jumps threaded" "vrp2" } } */ > +/* aarch64 has the highest CASE_VALUES_THRESHOLD in GCC. It's high enough > + to change decisions in switch expansion which in turn can expose new > + jump threading opportunities. Skip the later tests on aarch64. */ > +/* { dg-final { scan-tree-dump-not "Jumps threaded" "dom3" { target { ! aarch64*-*-* } } } } */ > +/* { dg-final { scan-tree-dump-not "Jumps threaded" "vrp2" { target { ! aarch64*-*-* } } } } */ > > /* Most architectures get 3 threadable paths here, whereas aarch64 and > possibly others get 5. We really should rewrite threading tests to >