! RUN: %flang_fc1 -fdebug-unparse -fopenmp -fopenmp-version=50 %s | \ ! RUN: FileCheck --ignore-case %s ! RUN: %flang_fc1 -fdebug-dump-parse-tree -fopenmp -fopenmp-version=50 %s | \ ! RUN: FileCheck --check-prefix="PARSE-TREE" %s ! Check for parsing of parallel loop combined construct (OpenMP 5.0, 2.13.2) subroutine test_parallel_loop integer :: i, j = 1 !PARSE-TREE: OmpBeginDirective !PARSE-TREE-NEXT: OmpDirectiveName -> llvm::omp::Directive = parallel loop !CHECK: !$omp parallel loop !$omp parallel loop do i=1,10 j = j + 1 end do end subroutine subroutine test_parallel_loop_with_end integer :: i, j = 1 !PARSE-TREE: OmpBeginDirective !PARSE-TREE-NEXT: OmpDirectiveName -> llvm::omp::Directive = parallel loop !CHECK: !$omp parallel loop !$omp parallel loop do i=1,10 j = j + 1 end do !PARSE-TREE: OmpEndDirective !PARSE-TREE-NEXT: OmpDirectiveName -> llvm::omp::Directive = parallel loop !CHECK: !$omp end parallel loop !$omp end parallel loop end subroutine subroutine test_parallel_loop_with_clauses integer :: i, j = 1 !PARSE-TREE: OmpBeginDirective !PARSE-TREE-NEXT: OmpDirectiveName -> llvm::omp::Directive = parallel loop !CHECK: !$omp parallel loop num_threads(4_4) collapse(1_4) private(j) default(shared) !$omp parallel loop num_threads(4) collapse(1) private(j) default(shared) do i=1,10 j = j + 1 end do end subroutine subroutine test_parallel_loop_with_reduction integer :: i, total total = 0 !PARSE-TREE: OmpBeginDirective !PARSE-TREE-NEXT: OmpDirectiveName -> llvm::omp::Directive = parallel loop !CHECK: !$omp parallel loop reduction(+: total) !$omp parallel loop reduction(+:total) do i=1,10 total = total + i end do end subroutine subroutine test_parallel_loop_with_if integer :: i, j = 1 logical :: cond cond = .true. !PARSE-TREE: OmpBeginDirective !PARSE-TREE-NEXT: OmpDirectiveName -> llvm::omp::Directive = parallel loop !CHECK: !$omp parallel loop if(cond) proc_bind(close) !$omp parallel loop if(cond) proc_bind(close) do i=1,10 j = j + 1 end do end subroutine