| !RUN: %flang_fc1 -fdebug-unparse -fopenmp -fopenmp-version=52 %s | FileCheck --ignore-case --check-prefix="UNPARSE" %s |
| !RUN: %flang_fc1 -fdebug-dump-parse-tree -fopenmp -fopenmp-version=52 %s | FileCheck --check-prefix="PARSE-TREE" %s |
| |
| subroutine f00(x) |
| integer :: x(10, 10) |
| !$omp do ordered(2) |
| do i = 1, 10 |
| do j = 1, 10 |
| !$omp ordered doacross(source) |
| x(i, j) = i + j |
| enddo |
| enddo |
| !$omp end do |
| end |
| |
| !UNPARSE: SUBROUTINE f00 (x) |
| !UNPARSE: INTEGER x(10_4,10_4) |
| !UNPARSE: !$OMP DO ORDERED(2_4) |
| !UNPARSE: DO i=1_4,10_4 |
| !UNPARSE: DO j=1_4,10_4 |
| !UNPARSE: !$OMP ORDERED DOACROSS(SOURCE) |
| !UNPARSE: x(int(i,kind=8),int(j,kind=8))=i+j |
| !UNPARSE: END DO |
| !UNPARSE: END DO |
| !UNPARSE: !$OMP END DO |
| !UNPARSE: END SUBROUTINE |
| |
| !PARSE-TREE-LABEL: ProgramUnit -> SubroutineSubprogram |
| !PARSE-TREE: OmpBeginLoopDirective |
| !PARSE-TREE: | OmpLoopDirective -> llvm::omp::Directive = do |
| !PARSE-TREE: | OmpClauseList -> OmpClause -> Ordered -> Scalar -> Integer -> Constant -> Expr = '2_4' |
| !PARSE-TREE: | | LiteralConstant -> IntLiteralConstant = '2' |
| ![...] |
| !PARSE-TREE: ExecutionPartConstruct -> ExecutableConstruct -> OpenMPConstruct -> OpenMPStandaloneConstruct -> OpenMPSimpleStandaloneConstruct -> OmpDirectiveSpecification |
| !PARSE-TREE: | OmpDirectiveName -> llvm::omp::Directive = ordered |
| !PARSE-TREE: | OmpClauseList -> OmpClause -> Doacross -> OmpDoacrossClause -> OmpDoacross -> Source |
| |
| subroutine f01(x) |
| integer :: x(10, 10) |
| !$omp do ordered(2) |
| do i = 1, 10 |
| do j = 1, 10 |
| !$omp ordered doacross(sink: i+1, j-2), doacross(sink: i, j+3) |
| x(i, j) = i + j |
| enddo |
| enddo |
| !$omp end do |
| end |
| |
| !UNPARSE: SUBROUTINE f01 (x) |
| !UNPARSE: INTEGER x(10_4,10_4) |
| !UNPARSE: !$OMP DO ORDERED(2_4) |
| !UNPARSE: DO i=1_4,10_4 |
| !UNPARSE: DO j=1_4,10_4 |
| !UNPARSE: !$OMP ORDERED DOACROSS(SINK: i+1_4, j-2_4) DOACROSS(SINK: i, j+3_4) |
| !UNPARSE: x(int(i,kind=8),int(j,kind=8))=i+j |
| !UNPARSE: END DO |
| !UNPARSE: END DO |
| !UNPARSE: !$OMP END DO |
| !UNPARSE: END SUBROUTINE |
| |
| !PARSE-TREE-LABEL: ProgramUnit -> SubroutineSubprogram |
| !PARSE-TREE: OmpBeginLoopDirective |
| !PARSE-TREE: | OmpLoopDirective -> llvm::omp::Directive = do |
| !PARSE-TREE: | OmpClauseList -> OmpClause -> Ordered -> Scalar -> Integer -> Constant -> Expr = '2_4' |
| !PARSE-TREE: | | LiteralConstant -> IntLiteralConstant = '2' |
| ![...] |
| !PARSE-TREE: ExecutionPartConstruct -> ExecutableConstruct -> OpenMPConstruct -> OpenMPStandaloneConstruct -> OpenMPSimpleStandaloneConstruct -> OmpDirectiveSpecification |
| !PARSE-TREE: | OmpDirectiveName -> llvm::omp::Directive = ordered |
| !PARSE-TREE: | OmpClauseList -> OmpClause -> Doacross -> OmpDoacrossClause -> OmpDoacross -> Sink -> OmpIterationVector -> OmpIteration |
| !PARSE-TREE: | | Name = 'i' |
| !PARSE-TREE: | | OmpIterationOffset |
| !PARSE-TREE: | | | DefinedOperator -> IntrinsicOperator = Add |
| !PARSE-TREE: | | | Scalar -> Integer -> Constant -> Expr = '1_4' |
| !PARSE-TREE: | | | | LiteralConstant -> IntLiteralConstant = '1' |
| !PARSE-TREE: | OmpIteration |
| !PARSE-TREE: | | Name = 'j' |
| !PARSE-TREE: | | OmpIterationOffset |
| !PARSE-TREE: | | | DefinedOperator -> IntrinsicOperator = Subtract |
| !PARSE-TREE: | | | Scalar -> Integer -> Constant -> Expr = '2_4' |
| !PARSE-TREE: | | | | LiteralConstant -> IntLiteralConstant = '2' |
| !PARSE-TREE: | OmpClause -> Doacross -> OmpDoacrossClause -> OmpDoacross -> Sink -> OmpIterationVector -> OmpIteration |
| !PARSE-TREE: | | Name = 'i' |
| !PARSE-TREE: | OmpIteration |
| !PARSE-TREE: | | Name = 'j' |
| !PARSE-TREE: | | OmpIterationOffset |
| !PARSE-TREE: | | | DefinedOperator -> IntrinsicOperator = Add |
| !PARSE-TREE: | | | Scalar -> Integer -> Constant -> Expr = '3_4' |
| !PARSE-TREE: | | | | LiteralConstant -> IntLiteralConstant = '3' |
| |