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