From: Richard Biener Date: Fri, 12 Jan 2024 07:33:48 +0000 (+0100) Subject: middle-end/113344 - is_truth_type_for vs GENERIC tcc_comparison X-Git-Tag: basepoints/gcc-15~2969 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=160799b366c33246ca16b84020ec49c3feabb0a3;p=thirdparty%2Fgcc.git middle-end/113344 - is_truth_type_for vs GENERIC tcc_comparison On GENERIC tcc_comparison can have int type so restrict the PR113126 fix to vector types. 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. --- diff --git a/gcc/fold-const.cc b/gcc/fold-const.cc index 585c5099a37a..385e4a69ab38 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 0bcf3153ff2d..e42ecaf9ec78 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))))))))