aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vect-patterns.cc
diff options
context:
space:
mode:
authorAndrew Pinski <quic_apinski@quicinc.com>2024-04-30 14:45:26 -0700
committerAndrew Pinski <quic_apinski@quicinc.com>2024-05-07 14:41:15 -0700
commite472527c7b45d23e8dfd0fb767a6e663b4bc136e (patch)
tree5926e0837501251d372a701b24c9aeefac966c33 /gcc/tree-vect-patterns.cc
parent9f14f1978260148d4d6208dfd73df1858e623758 (diff)
downloadgcc-e472527c7b45d23e8dfd0fb767a6e663b4bc136e.zip
gcc-e472527c7b45d23e8dfd0fb767a6e663b4bc136e.tar.gz
gcc-e472527c7b45d23e8dfd0fb767a6e663b4bc136e.tar.bz2
MATCH: Add some more value_replacement simplifications (a != 0 ? expr : 0) to match
This adds a few more of what is currently done in phiopt's value_replacement to match. I noticed this when I was hooking up phiopt's value_replacement code to use match and disabling the old code. But this can be done independently from the hooking up phiopt's value_replacement as phiopt is already hooked up for simplified versions already. /* a != 0 ? a / b : 0 -> a / b iff b is nonzero. */ /* a != 0 ? a * b : 0 -> a * b */ /* a != 0 ? a & b : 0 -> a & b */ We prefer the `cond ? a : 0` forms to allow optimization of `a * cond` which uses that form. Bootstrapped and tested on x86_64-linux-gnu with no regressions. PR tree-optimization/114894 gcc/ChangeLog: * match.pd (`a != 0 ? a / b : 0`): New pattern. (`a != 0 ? a * b : 0`): New pattern. (`a != 0 ? a & b : 0`): New pattern. gcc/testsuite/ChangeLog: * gcc.dg/tree-ssa/phi-opt-value-5.c: New test. Signed-off-by: Andrew Pinski <quic_apinski@quicinc.com>
Diffstat (limited to 'gcc/tree-vect-patterns.cc')
0 files changed, 0 insertions, 0 deletions