!RUN: %flang_fc1 -emit-fir -flang-deprecated-no-hlfir -fopenmp %s -o - | FileCheck %s --check-prefixes="FIRDialect,OMPDialect" !RUN: %flang_fc1 -emit-fir -flang-deprecated-no-hlfir -fopenmp %s -o - | fir-opt --cfg-conversion | fir-opt --fir-to-llvm-ir | FileCheck %s --check-prefixes="OMPDialect,LLVMDialect" !=============================================================================== ! Parallel sections construct !=============================================================================== !FIRDialect: func @_QPomp_parallel_sections subroutine omp_parallel_sections(x, y) integer, intent(inout) :: x, y !OMPDialect: omp.parallel { !OMPDialect: omp.sections { !$omp parallel sections !OMPDialect: omp.section { !$omp section !FIRDialect: fir.load !FIRDialect: arith.addi !FIRDialect: fir.store x = x + 12 !OMPDialect: omp.terminator !OMPDialect: omp.section { !$omp section !FIRDialect: fir.load !FIRDialect: arith.subi !FIRDialect: fir.store y = y - 5 !OMPDialect: omp.terminator !OMPDialect: omp.terminator !OMPDialect: omp.terminator !$omp end parallel sections end subroutine omp_parallel_sections !=============================================================================== ! Parallel sections construct with allocate clause !=============================================================================== !FIRDialect: func @_QPomp_parallel_sections subroutine omp_parallel_sections_allocate(x, y) use omp_lib integer, intent(inout) :: x, y !FIRDialect: %[[allocator_1:.*]] = arith.constant 1 : i32 !FIRDialect: %[[allocator_2:.*]] = arith.constant 1 : i32 !LLVMDialect: %[[allocator_1:.*]] = llvm.mlir.constant(1 : i32) : i32 !LLVMDialect: %[[allocator_2:.*]] = llvm.mlir.constant(1 : i32) : i32 !OMPDialect: omp.parallel allocate( !FIRDialect: %[[allocator_2]] : i32 -> %{{.*}} : !fir.ref) { !LLVMDialect: %[[allocator_2]] : i32 -> %{{.*}} : !llvm.ptr) { !OMPDialect: omp.sections allocate( !FIRDialect: %[[allocator_1]] : i32 -> %{{.*}} : !fir.ref) { !LLVMDialect: %[[allocator_1]] : i32 -> %{{.*}} : !llvm.ptr) { !$omp parallel sections allocate(omp_high_bw_mem_alloc: x) !OMPDialect: omp.section { !$omp section x = x + 12 !OMPDialect: omp.terminator !OMPDialect: omp.section { !$omp section y = y + 5 !OMPDialect: omp.terminator !OMPDialect: omp.terminator !OMPDialect: omp.terminator !$omp end parallel sections end subroutine omp_parallel_sections_allocate