65 lines · plain
1!RUN: %flang_fc1 -fdebug-unparse -fopenmp -fopenmp-version=52 %s | FileCheck --ignore-case --check-prefix="UNPARSE" %s2!RUN: %flang_fc1 -fdebug-dump-parse-tree -fopenmp -fopenmp-version=52 %s | FileCheck --check-prefix="PARSE-TREE" %s3 4subroutine f005 integer :: x, y6 !$omp depobj(x) depend(in: y)7end8 9!UNPARSE: SUBROUTINE f0010!UNPARSE: INTEGER x, y11!UNPARSE: !$OMP DEPOBJ(x) DEPEND(IN: y)12!UNPARSE: END SUBROUTINE13 14!PARSE-TREE: ExecutionPartConstruct -> ExecutableConstruct -> OpenMPConstruct -> OpenMPStandaloneConstruct -> OpenMPDepobjConstruct -> OmpDirectiveSpecification15!PARSE-TREE: | OmpDirectiveName -> llvm::omp::Directive = depobj16!PARSE-TREE: | OmpArgumentList -> OmpArgument -> OmpLocator -> OmpObject -> Designator -> DataRef -> Name = 'x'17!PARSE-TREE: | OmpClauseList -> OmpClause -> Depend -> OmpDependClause -> TaskDep18!PARSE-TREE: | | Modifier -> OmpTaskDependenceType -> Value = In19!PARSE-TREE: | | OmpObjectList -> OmpObject -> Designator -> DataRef -> Name = 'y'20 21subroutine f0122 integer :: x23 !$omp depobj(x) update(out)24end25 26!UNPARSE: SUBROUTINE f0127!UNPARSE: INTEGER x28!UNPARSE: !$OMP DEPOBJ(x) UPDATE(OUT)29!UNPARSE: END SUBROUTINE30 31!PARSE-TREE: ExecutionPartConstruct -> ExecutableConstruct -> OpenMPConstruct -> OpenMPStandaloneConstruct -> OpenMPDepobjConstruct -> OmpDirectiveSpecification32!PARSE-TREE: | OmpDirectiveName -> llvm::omp::Directive = depobj33!PARSE-TREE: | OmpArgumentList -> OmpArgument -> OmpLocator -> OmpObject -> Designator -> DataRef -> Name = 'x'34!PARSE-TREE: | OmpClauseList -> OmpClause -> Update -> OmpUpdateClause -> OmpTaskDependenceType -> Value = Out35 36subroutine f0237 integer :: x38 !$omp depobj(x) destroy(x)39end40 41!UNPARSE: SUBROUTINE f0242!UNPARSE: INTEGER x43!UNPARSE: !$OMP DEPOBJ(x) DESTROY(x)44!UNPARSE: END SUBROUTINE45 46!PARSE-TREE: ExecutionPartConstruct -> ExecutableConstruct -> OpenMPConstruct -> OpenMPStandaloneConstruct -> OpenMPDepobjConstruct -> OmpDirectiveSpecification47!PARSE-TREE: | OmpDirectiveName -> llvm::omp::Directive = depobj48!PARSE-TREE: | OmpArgumentList -> OmpArgument -> OmpLocator -> OmpObject -> Designator -> DataRef -> Name = 'x'49!PARSE-TREE: | OmpClauseList -> OmpClause -> Destroy -> OmpDestroyClause -> OmpObject -> Designator -> DataRef -> Name = 'x'50 51subroutine f0352 integer :: x53 !$omp depobj(x) destroy54end55 56!UNPARSE: SUBROUTINE f0357!UNPARSE: INTEGER x58!UNPARSE: !$OMP DEPOBJ(x) DESTROY59!UNPARSE: END SUBROUTINE60 61!PARSE-TREE: ExecutionPartConstruct -> ExecutableConstruct -> OpenMPConstruct -> OpenMPStandaloneConstruct -> OpenMPDepobjConstruct -> OmpDirectiveSpecification62!PARSE-TREE: | OmpDirectiveName -> llvm::omp::Directive = depobj63!PARSE-TREE: | OmpArgumentList -> OmpArgument -> OmpLocator -> OmpObject -> Designator -> DataRef -> Name = 'x'64!PARSE-TREE: | OmpClauseList -> OmpClause -> Destroy ->65