]> git.ipfire.org Git - thirdparty/gcc.git/commit
testsuite: check for and use -mno-strict-align where needed
authorAlexandre Oliva <oliva@adacore.com>
Tue, 7 Nov 2023 11:02:03 +0000 (08:02 -0300)
committerAlexandre Oliva <oliva@gnu.org>
Tue, 7 Nov 2023 11:02:03 +0000 (08:02 -0300)
commite87bc7dc08a1bd05f07781edf064db26456102d5
tree87353b058773e78c9188712100a9f15d49ec80a9
parent74b35716a8eb3fef8ce2545ebdb1ff78cbeed28b
testsuite: check for and use -mno-strict-align where needed

Various tests fail on powerpc if the toolchain is configured to enable
-mstrict-align by default.  This patch introduces -mno-strict-align on
tests found to fail that way, when the target supports this option.

I suppose !non_strict_align could be used to skip tests, instead of or
in addition to this tweak, and that might be desirable if they still
fail on targets that do no support -mno-strict-align, but I haven't
observed such scenarios.

The p9-vec-length tests expect vectorization on loop bodies and
epilogues that reference arrays that are not known to be more aligned
than their small element types.

Though VSX vectors work best with 32- or 64-bit alignment, unaligned
vector loads and stores are expected by the tests.  However, with
-mstrict-align by default, vector loads and stores not known to be
aligned end up open coded, which doesn't match the asm output
expectations coded in the tests.

for  gcc/ChangeLog

* doc/sourcebuild.texi (opt_mstrict_align): New target.

for  gcc/testsuite/ChangeLog

* lib/target-supports.exp
(check_effective_target_opt_mstrict_align): New.
* gcc.dg/strlenopt-80.c: Add -mno-strict-align if supported.
* gcc.target/powerpc/prefix-ds-dq.c: Likewise.
* gcc.target/powerpc/p9-vec-length-epil-1.c: Likewise.
* gcc.target/powerpc/p9-vec-length-epil-2.c: Likewise.
* gcc.target/powerpc/p9-vec-length-epil-3.c: Likewise.
* gcc.target/powerpc/p9-vec-length-epil-4.c: Likewise.
* gcc.target/powerpc/p9-vec-length-epil-5.c: Likewise.
* gcc.target/powerpc/p9-vec-length-epil-6.c: Likewise.
* gcc.target/powerpc/p9-vec-length-epil-7.c: Likewise.
* gcc.target/powerpc/p9-vec-length-epil-8.c: Likewise.
* gcc.target/powerpc/p9-vec-length-epil-run-1.c: Likewise.
* gcc.target/powerpc/p9-vec-length-epil-run-2.c: Likewise.
* gcc.target/powerpc/p9-vec-length-epil-run-3.c: Likewise.
* gcc.target/powerpc/p9-vec-length-epil-run-4.c: Likewise.
* gcc.target/powerpc/p9-vec-length-epil-run-5.c: Likewise.
* gcc.target/powerpc/p9-vec-length-epil-run-6.c: Likewise.
* gcc.target/powerpc/p9-vec-length-epil-run-7.c: Likewise.
* gcc.target/powerpc/p9-vec-length-epil-run-8.c: Likewise.
* gcc.target/powerpc/p9-vec-length-full-1.c: Likewise.
* gcc.target/powerpc/p9-vec-length-full-2.c: Likewise.
* gcc.target/powerpc/p9-vec-length-full-3.c: Likewise.
* gcc.target/powerpc/p9-vec-length-full-4.c: Likewise.
* gcc.target/powerpc/p9-vec-length-full-5.c: Likewise.
* gcc.target/powerpc/p9-vec-length-full-6.c: Likewise.
* gcc.target/powerpc/p9-vec-length-full-7.c: Likewise.
* gcc.target/powerpc/p9-vec-length-full-8.c: Likewise.
* gcc.target/powerpc/p9-vec-length-full-run-1.c: Likewise.
* gcc.target/powerpc/p9-vec-length-full-run-2.c: Likewise.
* gcc.target/powerpc/p9-vec-length-full-run-3.c: Likewise.
* gcc.target/powerpc/p9-vec-length-full-run-4.c: Likewise.
* gcc.target/powerpc/p9-vec-length-full-run-5.c: Likewise.
* gcc.target/powerpc/p9-vec-length-full-run-6.c: Likewise.
* gcc.target/powerpc/p9-vec-length-full-run-7.c: Likewise.
* gcc.target/powerpc/p9-vec-length-full-run-8.c: Likewise.
36 files changed:
gcc/doc/sourcebuild.texi
gcc/testsuite/gcc.dg/strlenopt-80.c
gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-1.c
gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-2.c
gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-3.c
gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-4.c
gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-5.c
gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-6.c
gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-7.c
gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-8.c
gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-run-1.c
gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-run-2.c
gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-run-3.c
gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-run-4.c
gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-run-5.c
gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-run-6.c
gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-run-7.c
gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-run-8.c
gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-1.c
gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-2.c
gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-3.c
gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-4.c
gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-5.c
gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-6.c
gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-7.c
gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-8.c
gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-run-1.c
gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-run-2.c
gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-run-3.c
gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-run-4.c
gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-run-5.c
gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-run-6.c
gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-run-7.c
gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-run-8.c
gcc/testsuite/gcc.target/powerpc/prefix-ds-dq.c
gcc/testsuite/lib/target-supports.exp