]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
tree-optimization/121130 - vectorizable_call cannot handle .MASK_CALL
authorRichard Biener <rguenther@suse.de>
Wed, 30 Jul 2025 10:34:20 +0000 (12:34 +0200)
committerRichard Biener <rguenther@suse.de>
Thu, 31 Jul 2025 06:26:36 +0000 (08:26 +0200)
The following makes it correctly reject them,
vectorizable_simd_clone_call is solely responsible for them.

PR tree-optimization/121130
* tree-vect-stmts.cc (vectorizable_call): Bail out for
.MASK_CALL.

* gcc.dg/vect/vect-simd-pr121130.c: New testcase.

(cherry picked from commit a0d2de441ea0898e508c36567fbb77f161afa3c8)

gcc/testsuite/gcc.dg/vect/vect-simd-pr121130.c [new file with mode: 0644]
gcc/tree-vect-stmts.cc

diff --git a/gcc/testsuite/gcc.dg/vect/vect-simd-pr121130.c b/gcc/testsuite/gcc.dg/vect/vect-simd-pr121130.c
new file mode 100644 (file)
index 0000000..c882ded
--- /dev/null
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+
+int n2;
+
+__attribute__((simd)) char
+w7(void)
+{
+  short int xb = n2;
+    xb = w7() < 1;
+  return xb;
+}
index d6651a3ed06bc38719527eba0f82b885aaa3e92d..c1d34503fab2ed0db265f62e9bde261dd20fc002 100644 (file)
@@ -3560,7 +3560,13 @@ vectorizable_call (vec_info *vinfo,
 
   int mask_opno = -1;
   if (internal_fn_p (cfn))
-    mask_opno = internal_fn_mask_index (as_internal_fn (cfn));
+    {
+      /* We can only handle direct internal masked calls here,
+        vectorizable_simd_clone_call is for the rest.  */
+      if (cfn == CFN_MASK_CALL)
+       return false;
+      mask_opno = internal_fn_mask_index (as_internal_fn (cfn));
+    }
 
   for (i = 0; i < nargs; i++)
     {