[Openmp-commits] [llvm] [openmp] [OpenMP][offload] Fix single-thread SPMD cross-team reductions (PR #231843)

via Openmp-commits openmp-commits at lists.llvm.org
Wed Oct 14 05:16:39 PDT 2026


github-actions[bot] wrote:

<!--PREMERGE ADVISOR COMMENT: Windows-->
# :window: Windows x64 Test Results

* 144109 tests passed
* 3566 tests skipped
* 1 test failed

## Failed Tests
(click on a test name to see its output)

### LLVM
<details>
<summary>LLVM.Transforms/OpenMP/spmdization_guarding_two_reaching_kernels.ll</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
c:\_work\llvm-project\llvm-project\build\bin\opt.exe -S -mtriple=nvptx64 -passes=openmp-opt < C:\_work\llvm-project\llvm-project\llvm\test\Transforms\OpenMP\spmdization_guarding_two_reaching_kernels.ll | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\Transforms\OpenMP\spmdization_guarding_two_reaching_kernels.ll
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\opt.exe' -S -mtriple=nvptx64 -passes=openmp-opt
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\llvm\test\Transforms\OpenMP\spmdization_guarding_two_reaching_kernels.ll'
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\llvm\test\Transforms\OpenMP\spmdization_guarding_two_reaching_kernels.ll:48:10: error: CHECK: expected string not found in input
# | ; CHECK: @__omp_offloading_2b_10393b5_generic_l20_kernel_environment = local_unnamed_addr constant %struct.KernelEnvironmentTy { %struct.ConfigurationEnvironmentTy { i8 0, i8 0, i8 3, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 }, ptr @[[GLOB1]], ptr null }
# |          ^
# | <stdin>:14:235: note: scanning from here
# | @__omp_offloading_2b_10393b5_spmd_l12_kernel_environment = local_unnamed_addr constant %struct.KernelEnvironmentTy { %struct.ConfigurationEnvironmentTy { i8 0, i8 1, i8 3, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 }, ptr @1, ptr null }
# |                                                                                                                                                                                                                                           ^
# | <stdin>:14:235: note: with "GLOB1" equal to "1"
# | @__omp_offloading_2b_10393b5_spmd_l12_kernel_environment = local_unnamed_addr constant %struct.KernelEnvironmentTy { %struct.ConfigurationEnvironmentTy { i8 0, i8 1, i8 3, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 }, ptr @1, ptr null }
# |                                                                                                                                                                                                                                           ^
# | <stdin>:15:1: note: possible intended match here
# | @__omp_offloading_2b_10393b5_generic_l20_kernel_environment = local_unnamed_addr constant %struct.KernelEnvironmentTy { %struct.ConfigurationEnvironmentTy { i8 0, i8 0, i8 3, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 }, ptr @1, ptr null }
# | ^
# | C:\_work\llvm-project\llvm-project\llvm\test\Transforms\OpenMP\spmdization_guarding_two_reaching_kernels.ll:288:60: error: undefined variable: GLOB3
# | ; CHECK-NEXT: call void @__kmpc_barrier_simple_spmd(ptr @[[GLOB3]], i32 [[TMP0]])
# |                                                            ^
# | <stdin>:124:16: note: with "TMP0" equal to "%0"
# | region.barrier: ; preds = %region.check.tid, %region.guarded.end
# |                ^
# | <stdin>:125:2: note: possible intended match here
# |  call void @__kmpc_barrier_simple_spmd(ptr @3, i32 %0)
# |  ^
# | 
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\llvm\test\Transforms\OpenMP\spmdization_guarding_two_reaching_kernels.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |             .
# |             .
# |             .
# |             9:  
# |            10: @0 = private unnamed_addr constant [23 x i8] c";unknown;unknown;0;0;;\00", align 1 
# |            11: @1 = private unnamed_addr constant %struct.ident_t { i32 0, i32 2, i32 0, i32 0, ptr @0 }, align 8 
# |            12: @2 = private unnamed_addr constant %struct.ident_t { i32 0, i32 2, i32 2, i32 0, ptr @0 }, align 8 
# |            13: @G = external global i32, align 4 
# |            14: @__omp_offloading_2b_10393b5_spmd_l12_kernel_environment = local_unnamed_addr constant %struct.KernelEnvironmentTy { %struct.ConfigurationEnvironmentTy { i8 0, i8 1, i8 3, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 }, ptr @1, ptr null } 
# | check:48'0                                                                                                                                                                                                                                              {   search range start (exclusive)
# | check:48'1                                                                                                                                                                                                                                                  error: no match found in search range
# | check:48'2                                                                                                                                                                                                                                                  with "GLOB1" equal to "1"
# |            15: @__omp_offloading_2b_10393b5_generic_l20_kernel_environment = local_unnamed_addr constant %struct.KernelEnvironmentTy { %struct.ConfigurationEnvironmentTy { i8 0, i8 0, i8 3, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 }, ptr @1, ptr null } 
# | check:48'3     ?                                                                                                                                                                                                                                               possible intended match
# |            16: @3 = private unnamed_addr constant %struct.ident_t { i32 0, i32 2, i32 0, i32 22, ptr @0 }, align 8 
# |            17:  
# |            18: ; Function Attrs: convergent noinline norecurse nounwind 
# |            19: define weak ptx_kernel void @__omp_offloading_2b_10393b5_spmd_l12(ptr %dyn) #0 { 
# | check:48'4                                                                      }                 search range end (exclusive)
# |            20: entry: 
# |            21:  %0 = call i32 @__kmpc_target_init(ptr @__omp_offloading_2b_10393b5_spmd_l12_kernel_environment, ptr %dyn) 
# |            22:  %exec_user_code = icmp eq i32 %0, -1 
# |            23:  br i1 %exec_user_code, label %user_code.entry, label %worker.exit 
# |            24:  
# |             .
# |             .
# |             .
# |           119:  br label %region.guarded.end 
# |           120:  
# |           121: region.guarded.end: ; preds = %region.guarded 
# |           122:  br label %region.barrier 
# |           123:  
# |           124: region.barrier: ; preds = %region.check.tid, %region.guarded.end 
# | next:288'0                   {                                                    search range start (exclusive)
# | next:288'1                                                                        error: match failed for invalid pattern
# | next:288'2                                                                        undefined variable: GLOB3
# | next:288'3                                                                        with "TMP0" equal to "%0"
# |           125:  call void @__kmpc_barrier_simple_spmd(ptr @3, i32 %0) 
# | next:288'4      ?                                                       possible intended match
# |           126:  br label %region.exit 
# |           127:  
# |           128: region.exit: ; preds = %region.barrier 
# |           129:  ret void 
# |           130: } 
# |           131:  
# |           132: ; Function Attrs: noinline nosync nounwind memory(write) 
# |           133: define internal void @generic_helper() #5 { 
# | next:288'5                                         }         search range end (exclusive)
# |           134: entry: 
# |           135:  call void @leaf() #7 
# |           136:  ret void 
# |           137: } 
# |           138:  
# |             .
# |             .
# |             .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>

If these failures are unrelated to your changes (for example tests are broken or flaky at HEAD), please open an issue at https://github.com/llvm/llvm-project/issues and add the `infrastructure` label.

https://github.com/llvm/llvm-project/pull/231843


More information about the Openmp-commits mailing list