On GENERIC tcc_comparison can have int type so restrict the PR113126 fix to vector types.
Bootstrapped and tested on x86_64-unknown-linux-gnu, pushed. PR middle-end/113344 * match.pd ((double)float CMP (double)float -> float CMP float): Perform result type check only for vectors. * fold-const.cc (fold_binary_loc): Likewise. --- gcc/fold-const.cc | 2 +- gcc/match.pd | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gcc/fold-const.cc b/gcc/fold-const.cc index 9feb31f5c8b..594ea843d9c 100644 --- a/gcc/fold-const.cc +++ b/gcc/fold-const.cc @@ -12901,7 +12901,7 @@ fold_binary_loc (location_t loc, enum tree_code code, tree type, newtype = TREE_TYPE (targ1); if (element_precision (newtype) < element_precision (TREE_TYPE (arg0)) - && is_truth_type_for (newtype, type)) + && (!VECTOR_TYPE_P (type) || is_truth_type_for (newtype, type))) return fold_build2_loc (loc, code, type, fold_convert_loc (loc, newtype, targ0), fold_convert_loc (loc, newtype, targ1)); diff --git a/gcc/match.pd b/gcc/match.pd index 0bcf3153ff2..e42ecaf9ec7 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -6799,7 +6799,7 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) ? TREE_TYPE (@00) : type1); } (if (element_precision (TREE_TYPE (@0)) > element_precision (newtype) - && is_truth_type_for (newtype, type)) + && (!VECTOR_TYPE_P (type) || is_truth_type_for (newtype, type))) (cmp (convert:newtype @00) (convert:newtype @10)))))))) -- 2.35.3