diff options
| author | Andrew Pinski <andrew.pinski@oss.qualcomm.com> | 2026-01-28 12:32:12 -0800 |
|---|---|---|
| committer | Andrew Pinski <andrew.pinski@oss.qualcomm.com> | 2026-01-29 19:52:03 -0800 |
| commit | 40f6ae016571ce6ea5951f406c4be7ff84914fbc (patch) | |
| tree | 0fd6f496ba3ff70bcd2980741b145e1018ae6585 /libjava/gnu/java | |
| parent | a57199cec3df3ad62d6ea4e467c076fc06876c36 (diff) | |
| download | gcc-40f6ae016571ce6ea5951f406c4be7ff84914fbc.zip gcc-40f6ae016571ce6ea5951f406c4be7ff84914fbc.tar.gz gcc-40f6ae016571ce6ea5951f406c4be7ff84914fbc.tar.bz2 | |
ifcvt: Improve noce_can_force_operand in ifcvt [PR122170]
Currently if the rtl is either an arithmetic or an unary
rtl, noce_can_force_operand checks to see if there is an
optab for that rtl code. This works for more things except
on some targets they have a ss_minus instruction but don't
implement the optab for it. In the case of arm you can
generate a ss_minus with a builtin and then when it comes
to trying to do ifcvt, force_operand fails over.
In this case the optab, sssub was only supported for
fixed-point modes before and it was working as code_to_optab
would return there was not optabs. But after r15-1030-gabe6d39365476e,
the optab will be return. What the backend is doing is correct and will
most likely happen with other rtl codes/optabs later on.
To fix this instead of just returning true if the optab exists, we need
to check if the optab entry for the mode exists.
PR rtl-optimization/122170
gcc/ChangeLog:
* ifcvt.cc (noce_can_force_operand): Don't only check if
there is an optab for the code check the entry for the
mode is non-null. Handle non integral div by checking
optab like force_operand does.
Signed-off-by: Andrew Pinski <andrew.pinski@oss.qualcomm.com>
Diffstat (limited to 'libjava/gnu/java')
0 files changed, 0 insertions, 0 deletions
