From 160799b366c33246ca16b84020ec49c3feabb0a3 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Fri, 12 Jan 2024 08:33:48 +0100 Subject: [PATCH] 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. --- 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 585c5099a37..385e4a69ab3 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))))))))