diff options
author | Kewen Lin <linkw@linux.ibm.com> | 2024-07-02 02:13:35 -0500 |
---|---|---|
committer | Kewen Lin <linkw@gcc.gnu.org> | 2024-07-02 02:13:35 -0500 |
commit | 56670281c6db19d75c7b63e38971ab84681b245c (patch) | |
tree | 02d4cf5dd9df985a9da24e9c47669adbbb4fc518 /gcc/ada | |
parent | 0b4fd672bf07e3bf8142b01125b4f8d2f14b1851 (diff) | |
download | gcc-56670281c6db19d75c7b63e38971ab84681b245c.zip gcc-56670281c6db19d75c7b63e38971ab84681b245c.tar.gz gcc-56670281c6db19d75c7b63e38971ab84681b245c.tar.bz2 |
isel: Fold more in gimple_expand_vec_cond_expr [PR115659]
As PR115659 shows, assuming c = x CMP y, there are some
folding chances for patterns r = c ? -1/z : z/0.
For r = c ? -1 : z, it can be folded into:
- r = c | z (with ior_optab supported)
- or r = c ? c : z
while for r = c ? z : 0, it can be foled into:
- r = c & z (with and_optab supported)
- or r = c ? z : c
This patch is to teach ISEL to take care of them and also
remove the redundant gsi_replace as the caller of function
gimple_expand_vec_cond_expr will handle it.
PR tree-optimization/115659
gcc/ChangeLog:
* gimple-isel.cc (gimple_expand_vec_cond_expr): Add more foldings for
patterns x CMP y ? -1 : z and x CMP y ? z : 0.
Diffstat (limited to 'gcc/ada')
0 files changed, 0 insertions, 0 deletions