From 7950d4cceb9fc7559b1343c95fc651cefbe287a0 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Fri, 7 Mar 2025 10:15:20 +0100 Subject: tree-optimization/119145 - avoid stray .MASK_CALL after vectorization When we BB vectorize an if-converted loop body we make sure to not leave around .MASK_LOAD or .MASK_STORE created by if-conversion but we failed to check for .MASK_CALL. PR tree-optimization/119145 * tree-vectorizer.cc (try_vectorize_loop_1): Avoid BB vectorizing an if-converted loop body when there's a .MASK_CALL in the loop body. * gcc.dg/vect/pr119145.c: New testcase. --- gcc/tree-vectorizer.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'gcc/tree-vectorizer.cc') diff --git a/gcc/tree-vectorizer.cc b/gcc/tree-vectorizer.cc index f38c8d2..447f882 100644 --- a/gcc/tree-vectorizer.cc +++ b/gcc/tree-vectorizer.cc @@ -1132,7 +1132,9 @@ try_vectorize_loop_1 (hash_table *&simduid_to_vf_htab, if (call && gimple_call_internal_p (call)) { internal_fn ifn = gimple_call_internal_fn (call); - if (ifn == IFN_MASK_LOAD || ifn == IFN_MASK_STORE + if (ifn == IFN_MASK_LOAD + || ifn == IFN_MASK_STORE + || ifn == IFN_MASK_CALL /* Don't keep the if-converted parts when the ifn with specifc type is not supported by the backend. */ || (direct_internal_fn_p (ifn) -- cgit v1.1