diff mbox series

[committed] PR testsuite/86540, twiddle for aarch64

Message ID a8263bbd-d343-e685-b280-3d61eb0f3848@redhat.com
State New
Headers show
Series [committed] PR testsuite/86540, twiddle for aarch64 | expand

Commit Message

Jeff Law Dec. 6, 2018, 3:36 p.m. UTC
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,

Jeff

Comments

Richard Earnshaw (lists) Dec. 7, 2018, 1:46 p.m. UTC | #1
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  <law@redhat.com>
> +
> +	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  <dmalcolm@redhat.com>
>  
>  	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
>
Jeff Law Dec. 7, 2018, 3:06 p.m. UTC | #2
On 12/7/18 6:46 AM, Richard Earnshaw (lists) wrote:
> 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.
That would have been my preference, but I didn't see a suitable PARAM
and adding one just for these two tests seemed like overkill.

jeff
diff mbox series

Patch

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  <law@redhat.com>
+
+	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  <dmalcolm@redhat.com>
 
 	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