rs6000: Remove -m[no-]fold-gimple flag [PR103686]
authorBill Schmidt <wschmidt@linux.ibm.com>
Thu, 3 Feb 2022 03:30:27 +0000 (21:30 -0600)
committerBill Schmidt <wschmidt@linux.ibm.com>
Thu, 3 Feb 2022 17:17:36 +0000 (11:17 -0600)
commit48bd780ee327c9ae6ffc0641e73cc1f4939fb204
tree57734c18b2b615a7d2fd7f277cf184b69fb58d7d
parent3f30f2d1dbb3228b8468b26239fe60c2974ce2ac
rs6000: Remove -m[no-]fold-gimple flag [PR103686]

The -m[no-]fold-gimple flag was really intended primarily for internal
testing while implementing GIMPLE folding for rs6000 vector built-in
functions.  It ended up leaking into other places, causing problems such
as PR103686 identifies.  Let's remove it.

There are a number of tests in the testsuite that require adjustment.
Some specify -mfold-gimple directly, which is the default, so that is
handled by removing the option.  Others unnecessarily specify
-mno-fold-gimple, as the tests work fine without this.  Again that is
handled by removing the option.  There are a couple of extra variants of
tests specifically for -mno-fold-gimple; for those, we can just remove the
whole test.

gcc.target/powerpc/builtins-1.c was more problematic.  It was written in
such a way as to be extremely fragile.  For this one, I rewrote the whole
test in a different style, using individual functions to test each
built-in function.  These same tests are also largely covered by
builtins-1-be-folded.c and builtins-1-le-folded.c, so I chose to
explicitly make this test -mbig for simplicity, and use -O2 for clean code
generation.  I made some slight modifications to the expected instruction
counts as a result, and tested on both 32- and 64-bit.

2022-02-02  Bill Schmidt  <wschmidt@linux.ibm.com>

gcc/
PR target/103686
* config/rs6000/rs6000-builtin.cc (rs6000_gimple_fold_builtin): Remove
test for !rs6000_fold_gimple.
* config/rs6000/rs6000.cc (rs6000_option_override_internal): Likewise.
* config/rs6000/rs6000.opt (mfold-gimple): Remove.

gcc/testsuite/
PR target/103686
* gcc.target/powerpc/builtins-1-be-folded.c: Remove -mfold-gimple
option.
* gcc.target/powerpc/builtins-1-le-folded.c: Likewise.
* gcc.target/powerpc/builtins-1.c: Rewrite to use small functions and
restrict to -O2 -mbig for predictability.  Adjust instruction counts.
* gcc.target/powerpc/builtins-5.c: Remove -mno-fold-gimple option.
* gcc.target/powerpc/p8-vec-xl-xst.c: Likewise.
* gcc.target/powerpc/pr83926.c: Likewise.
* gcc.target/powerpc/pr86731-nogimplefold-longlong.c: Delete.
* gcc.target/powerpc/pr86731-nogimplefold.c: Delete.
* gcc.target/powerpc/swaps-p8-17.c: Remove -mno-fold-gimple option.
12 files changed:
gcc/config/rs6000/rs6000-builtin.cc
gcc/config/rs6000/rs6000.cc
gcc/config/rs6000/rs6000.opt
gcc/testsuite/gcc.target/powerpc/builtins-1-be-folded.c
gcc/testsuite/gcc.target/powerpc/builtins-1-le-folded.c
gcc/testsuite/gcc.target/powerpc/builtins-1.c
gcc/testsuite/gcc.target/powerpc/builtins-5.c
gcc/testsuite/gcc.target/powerpc/p8-vec-xl-xst.c
gcc/testsuite/gcc.target/powerpc/pr83926.c
gcc/testsuite/gcc.target/powerpc/pr86731-nogimplefold-longlong.c [deleted file]
gcc/testsuite/gcc.target/powerpc/pr86731-nogimplefold.c [deleted file]
gcc/testsuite/gcc.target/powerpc/swaps-p8-17.c