From: Richard Biener Date: Mon, 26 Jan 2026 07:05:34 +0000 (+0100) Subject: tree-optimization/123794 - fix OMP SIMD scalar call removal X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3e0430bca4b546c07067df00644d251e55fecbad;p=thirdparty%2Fgcc.git tree-optimization/123794 - fix OMP SIMD scalar call removal The following makes sure to purge VDEFs for all calls. PR tree-optimization/123794 * tree-vect-slp.cc (vect_remove_slp_scalar_calls): Unlink VOPs for all calls. * gcc.dg/vect/vect-simd-clone-pr123794.c: New testcase. --- diff --git a/gcc/testsuite/gcc.dg/vect/vect-simd-clone-pr123794.c b/gcc/testsuite/gcc.dg/vect/vect-simd-clone-pr123794.c new file mode 100644 index 00000000000..2674b1e2961 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/vect-simd-clone-pr123794.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target vect_simd_clones } */ +/* { dg-additional-options "-fopenmp-simd" } */ + +extern long a[]; +#pragma omp declare simd +long my_fun(long); +long foo_i; +void foo() { +#pragma omp simd + for (foo_i = 0; foo_i < 3; foo_i += 1) + a[foo_i] = my_fun(foo_i); +} diff --git a/gcc/tree-vect-slp.cc b/gcc/tree-vect-slp.cc index e4e0320c678..c481efc749f 100644 --- a/gcc/tree-vect-slp.cc +++ b/gcc/tree-vect-slp.cc @@ -12135,10 +12135,8 @@ vect_remove_slp_scalar_calls (vec_info *vinfo, if (lhs) new_stmt = gimple_build_assign (lhs, build_zero_cst (TREE_TYPE (lhs))); else - { - new_stmt = gimple_build_nop (); - unlink_stmt_vdef (stmt_info->stmt); - } + new_stmt = gimple_build_nop (); + unlink_stmt_vdef (stmt_info->stmt); gsi = gsi_for_stmt (stmt); vinfo->replace_stmt (&gsi, stmt_info, new_stmt); if (lhs)