From: Richard Biener Date: Mon, 23 May 2022 09:41:50 +0000 (+0200) Subject: tree-optimization/105629 - spaceship recognition regression X-Git-Tag: basepoints/gcc-14~6485 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d918faea1217596877a35c4946500399731fbbd3;p=thirdparty%2Fgcc.git tree-optimization/105629 - spaceship recognition regression With the extra GENERIC folding we now do to (unsigned int) __v._M_value & 1 != (unsigned int) __v._M_value we end up with a sign-extending conversion to unsigned int rather than the sign-conversion to unsigned char we expect. Relaxing that fixes the regression. 2022-05-23 Richard Biener PR tree-optimization/105629 * tree-ssa-phiopt.cc (spaceship_replacement): Allow a sign-extending conversion. --- diff --git a/gcc/tree-ssa-phiopt.cc b/gcc/tree-ssa-phiopt.cc index 8c9c46d41f1..e61d9736937 100644 --- a/gcc/tree-ssa-phiopt.cc +++ b/gcc/tree-ssa-phiopt.cc @@ -2217,7 +2217,7 @@ spaceship_replacement (basic_block cond_bb, basic_block middle_bb, if (!TYPE_UNSIGNED (ty2) || !INTEGRAL_TYPE_P (ty2)) return false; - if (TYPE_PRECISION (ty1) != TYPE_PRECISION (ty2)) + if (TYPE_PRECISION (ty1) > TYPE_PRECISION (ty2)) return false; if (SSA_NAME_OCCURS_IN_ABNORMAL_PHI (orig_use_lhs)) return false;