]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ifcvt: Only allow scalar integral modes for noce_try_cond_zero_arith [PR123276]
authorAndrew Pinski <andrew.pinski@oss.qualcomm.com>
Tue, 23 Dec 2025 21:04:28 +0000 (13:04 -0800)
committerAndrew Pinski <andrew.pinski@oss.qualcomm.com>
Wed, 24 Dec 2025 01:45:26 +0000 (17:45 -0800)
This is the simple fix for PR 123276 where this code can only handle scalar
integral modes. We could in theory handle scalar floating point modes here
too but it is not worth the trouble.

Pushed as obvious after bootstrap/test on x86_64-linux-gnu.

PR rtl-optimization/123276
gcc/ChangeLog:

* ifcvt.cc (noce_try_cond_zero_arith): Reject non-scalar integral modes.

Signed-off-by: Andrew Pinski <andrew.pinski@oss.qualcomm.com>
gcc/ifcvt.cc

index d7df8773839ec041dde4979dc7a949d7971aa029..75d959f652c58ef85d00958123d9e48203f66e90 100644 (file)
@@ -3147,6 +3147,13 @@ noce_try_cond_zero_arith (struct noce_if_info *if_info)
   machine_mode mode = GET_MODE (if_info->x);
   bool reverse = false;
 
+  /* Scalar integral modes are only supported here.
+     Could support scalar floating point but that
+     would be only with -ffast-math and might
+     be worse than a branch.  */
+  if (!SCALAR_INT_MODE_P (mode))
+    return false;
+
   if (!noce_simple_bbs (if_info))
     return false;