// RUN: fir-opt --split-input-file --lower-workshare --allow-unregistered-dialect %s | FileCheck %s // Checks that the omp.workshare.loop_wrapper binds to the correct omp.workshare func.func @wsfunc() { %c1 = arith.constant 1 : index %c42 = arith.constant 42 : index omp.parallel { omp.workshare nowait { omp.parallel { omp.workshare nowait { omp.workshare.loop_wrapper { omp.loop_nest (%arg1) : index = (%c1) to (%c42) inclusive step (%c1) { "test.test2"() : () -> () omp.yield } } omp.terminator } omp.terminator } omp.terminator } omp.terminator } return } // CHECK-LABEL: func.func @wsfunc() { // CHECK: %[[VAL_0:.*]] = arith.constant 1 : index // CHECK: %[[VAL_1:.*]] = arith.constant 42 : index // CHECK: omp.parallel { // CHECK: omp.single nowait { // CHECK: omp.parallel { // CHECK: omp.wsloop nowait { // CHECK: omp.loop_nest (%[[VAL_2:.*]]) : index = (%[[VAL_0]]) to (%[[VAL_1]]) inclusive step (%[[VAL_0]]) { // CHECK: "test.test2"() : () -> () // CHECK: omp.yield // CHECK: } // CHECK: } // CHECK: omp.terminator // CHECK: } // CHECK: omp.terminator // CHECK: } // CHECK: omp.terminator // CHECK: } // CHECK: return // CHECK: }