diff options
author | Andrew Pinski <apinski@marvell.com> | 2021-05-22 19:49:50 +0000 |
---|---|---|
committer | Andrew Pinski <apinski@marvell.com> | 2021-05-26 00:46:31 +0000 |
commit | 1fd76b24306ed4df4cf9e797d900699ed59ce7f7 (patch) | |
tree | 21638bbbf36429bc99662ceafab24dc0cda85ae0 /gcc/gimplify.c | |
parent | b6bdd7a4cb41ee057f2d064fffcb00f23ce6b497 (diff) | |
download | gcc-1fd76b24306ed4df4cf9e797d900699ed59ce7f7.zip gcc-1fd76b24306ed4df4cf9e797d900699ed59ce7f7.tar.gz gcc-1fd76b24306ed4df4cf9e797d900699ed59ce7f7.tar.bz2 |
Optimize x < 0 ? ~y : y to (x >> 31) ^ y in match.pd
This copies the optimization that is done in phiopt for
"x < 0 ? ~y : y to (x >> 31) ^ y" into match.pd. The code
for phiopt is kept around until phiopt uses match.pd (which
I am working towards).
Note the original testcase is now optimized early on and I added a
new testcase to optimize during phiopt.
OK? Bootstrapped and tested on x86_64-linux-gnu with no regressions.
Thanks,
Andrew Pinski
Differences from v1:
V2: Add check for integeral type to make sure vector types are not done.
gcc:
* match.pd (x < 0 ? ~y : y): New patterns.
gcc/testsuite:
* gcc.dg/tree-ssa/pr96928.c: Update test for slightly different IR.
* gcc.dg/tree-ssa/pr96928-1.c: New testcase.
Diffstat (limited to 'gcc/gimplify.c')
0 files changed, 0 insertions, 0 deletions