aboutsummaryrefslogtreecommitdiff
path: root/libjava/gnu/java/beans/editors
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2026-02-02 10:07:15 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2026-02-02 10:07:15 +0100
commit49c7fc2d534cb7e16f0e95fd89f47eb0b0d34762 (patch)
tree428aa4798b805d07c676d161b4b635028d73a643 /libjava/gnu/java/beans/editors
parent1c0305d7aea53d788f3f74ca9a2bd9fb764c0109 (diff)
downloadgcc-49c7fc2d534cb7e16f0e95fd89f47eb0b0d34762.zip
gcc-49c7fc2d534cb7e16f0e95fd89f47eb0b0d34762.tar.gz
gcc-49c7fc2d534cb7e16f0e95fd89f47eb0b0d34762.tar.bz2
widening_mul: Fix UADDC/USUBC pattern matching [PR121104]
As the following testcase shows, I've missed a check that element type of lhs type of ovf1/ovf2 (.ADD_OVERFLOW/.SUB_OVERFLOW) matches type (there are some casts accepted on the way for the case of values in [0-1] range), so the following testcase got also matched as .SUBC and we get an ICE on type mismatch in there. The other .{ADD,SUB}_OVERFLOW cases already check even the result type, both if (gimple_call_internal_p (ovf, code == PLUS_EXPR ? IFN_ADD_OVERFLOW : IFN_SUB_OVERFLOW)) ... ovf_lhs = gimple_call_lhs (ovf); tree ovf_lhs_type = TREE_TYPE (TREE_TYPE (ovf_lhs)); ovf_arg1 = gimple_call_arg (ovf, 0); ovf_arg2 = gimple_call_arg (ovf, 1); /* In that case we need to punt if the types don't mismatch. */ if (!types_compatible_p (type, ovf_lhs_type) || !types_compatible_p (type, TREE_TYPE (ovf_arg1)) || !types_compatible_p (type, TREE_TYPE (ovf_arg2))) ovf_lhs = NULL_TREE; and gimple *ovf3 = SSA_NAME_DEF_STMT (TREE_OPERAND (gimple_assign_rhs1 (im3), 0)); if (gimple_call_internal_p (ovf3, ifn)) { lhs = gimple_call_lhs (ovf3); arg1 = gimple_call_arg (ovf3, 0); arg2 = gimple_call_arg (ovf3, 1); if (types_compatible_p (type, TREE_TYPE (TREE_TYPE (lhs))) && types_compatible_p (type, TREE_TYPE (arg1)) && types_compatible_p (type, TREE_TYPE (arg2))) 2026-02-02 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/121104 * tree-ssa-math-opts.cc (match_uaddc_usubc): Punt if lhs of ovf1 or ovf2 doesn't have element type compatible with type. * gcc.dg/pr121104.c: New test.
Diffstat (limited to 'libjava/gnu/java/beans/editors')
0 files changed, 0 insertions, 0 deletions