|
1 | | -! RUN: %flang_fc1 -fopenmp-version=51 -fopenmp -fdebug-unparse-no-sema %s 2>&1 | FileCheck %s |
2 | | -! RUN: %flang_fc1 -fopenmp-version=51 -fopenmp -fdebug-dump-parse-tree-no-sema %s 2>&1 | FileCheck %s --check-prefix="PARSE-TREE" |
| 1 | +!RUN: %flang_fc1 -fopenmp-version=51 -fopenmp -fdebug-unparse-no-sema %s | FileCheck --check-prefix="UNPARSE" %s |
| 2 | +!RUN: %flang_fc1 -fopenmp-version=51 -fopenmp -fdebug-dump-parse-tree-no-sema %s | FileCheck --check-prefix="PARSE-TREE" %s |
| 3 | + |
3 | 4 | subroutine sub1 |
4 | 5 | integer :: r |
5 | | -!CHECK: !$OMP ASSUME NO_OPENMP |
6 | | -!PARSE-TREE: ExecutionPartConstruct -> ExecutableConstruct -> OpenMPConstruct -> OpenMPAssumeConstruct |
7 | | -!PARSE-TREE: Verbatim |
8 | | -!PARSE-TREE: OmpClauseList -> OmpClause -> NoOpenmp |
9 | 6 | !$omp assume no_openmp |
10 | | -!CHECK: !$OMP ASSUME NO_PARALLELISM |
11 | | -!PARSE-TREE: ExecutionPartConstruct -> ExecutableConstruct -> OpenMPConstruct -> OpenMPAssumeConstruct |
12 | | -!PARSE-TREE: Verbatim |
13 | | -!PARSE-TREE: OmpClauseList -> OmpClause -> NoParallelism |
| 7 | + !$omp end assume |
| 8 | + |
14 | 9 | !$omp assume no_parallelism |
15 | | -!CHECK: !$OMP ASSUME NO_OPENMP_ROUTINES |
16 | | -!PARSE-TREE: ExecutionPartConstruct -> ExecutableConstruct -> OpenMPConstruct -> OpenMPAssumeConstruct |
17 | | -!PARSE-TREE: Verbatim |
18 | | -!PARSE-TREE: OmpClauseList -> OmpClause -> NoOpenmpRoutines |
| 10 | + !$omp end assume |
| 11 | + |
19 | 12 | !$omp assume no_openmp_routines |
20 | | -!CHECK: !$OMP ASSUME ABSENT(ALLOCATE), CONTAINS(WORKSHARE,TASK) |
21 | | -!PARSE-TREE: ExecutionPartConstruct -> ExecutableConstruct -> OpenMPConstruct -> OpenMPAssumeConstruct |
22 | | -!PARSE-TREE: Verbatim |
23 | | -!PARSE-TREE: OmpClauseList -> OmpClause -> Absent -> OmpAbsentClause -> llvm::omp::Directive = allocate |
24 | | -!PARSE-TREE: OmpClause -> Contains -> OmpContainsClause -> llvm::omp::Directive = workshare |
25 | | -!PARSE-TREE: llvm::omp::Directive = task |
26 | | - !$omp assume absent(allocate), contains(workshare, task) |
27 | | -!CHECK: !$OMP ASSUME HOLDS(1==1) |
| 13 | + !$omp end assume |
| 14 | + |
| 15 | + !$omp assume absent(allocate), contains(workshare, task) |
| 16 | + block ! strictly-structured-block |
| 17 | + end block |
| 18 | + |
28 | 19 | !$omp assume holds(1.eq.1) |
| 20 | + block |
| 21 | + end block |
29 | 22 | print *, r |
30 | 23 | end subroutine sub1 |
31 | 24 |
|
| 25 | +!UNPARSE: SUBROUTINE sub1 |
| 26 | +!UNPARSE: INTEGER r |
| 27 | +!UNPARSE: !$OMP ASSUME NO_OPENMP |
| 28 | +!UNPARSE: !$OMP END ASSUME |
| 29 | +!UNPARSE: !$OMP ASSUME NO_PARALLELISM |
| 30 | +!UNPARSE: !$OMP END ASSUME |
| 31 | +!UNPARSE: !$OMP ASSUME NO_OPENMP_ROUTINES |
| 32 | +!UNPARSE: !$OMP END ASSUME |
| 33 | +!UNPARSE: !$OMP ASSUME ABSENT(ALLOCATE) CONTAINS(WORKSHARE,TASK) |
| 34 | +!UNPARSE: BLOCK |
| 35 | +!UNPARSE: END BLOCK |
| 36 | +!UNPARSE: !$OMP ASSUME HOLDS(1==1) |
| 37 | +!UNPARSE: BLOCK |
| 38 | +!UNPARSE: END BLOCK |
| 39 | +!UNPARSE: PRINT *, r |
| 40 | +!UNPARSE: END SUBROUTINE sub1 |
| 41 | + |
| 42 | +!PARSE-TREE: ExecutionPartConstruct -> ExecutableConstruct -> OpenMPConstruct -> OpenMPAssumeConstruct |
| 43 | +!PARSE-TREE: | OmpBeginDirective |
| 44 | +!PARSE-TREE: | | OmpDirectiveName -> llvm::omp::Directive = assume |
| 45 | +!PARSE-TREE: | | OmpClauseList -> OmpClause -> NoOpenmp |
| 46 | +!PARSE-TREE: | | Flags = None |
| 47 | +!PARSE-TREE: | Block |
| 48 | +!PARSE-TREE: | OmpEndDirective |
| 49 | +!PARSE-TREE: | | OmpDirectiveName -> llvm::omp::Directive = assume |
| 50 | +!PARSE-TREE: | | OmpClauseList -> |
| 51 | +!PARSE-TREE: | | Flags = None |
| 52 | +!PARSE-TREE: ExecutionPartConstruct -> ExecutableConstruct -> OpenMPConstruct -> OpenMPAssumeConstruct |
| 53 | +!PARSE-TREE: | OmpBeginDirective |
| 54 | +!PARSE-TREE: | | OmpDirectiveName -> llvm::omp::Directive = assume |
| 55 | +!PARSE-TREE: | | OmpClauseList -> OmpClause -> NoParallelism |
| 56 | +!PARSE-TREE: | | Flags = None |
| 57 | +!PARSE-TREE: | Block |
| 58 | +!PARSE-TREE: | OmpEndDirective |
| 59 | +!PARSE-TREE: | | OmpDirectiveName -> llvm::omp::Directive = assume |
| 60 | +!PARSE-TREE: | | OmpClauseList -> |
| 61 | +!PARSE-TREE: | | Flags = None |
| 62 | +!PARSE-TREE: ExecutionPartConstruct -> ExecutableConstruct -> OpenMPConstruct -> OpenMPAssumeConstruct |
| 63 | +!PARSE-TREE: | OmpBeginDirective |
| 64 | +!PARSE-TREE: | | OmpDirectiveName -> llvm::omp::Directive = assume |
| 65 | +!PARSE-TREE: | | OmpClauseList -> OmpClause -> NoOpenmpRoutines |
| 66 | +!PARSE-TREE: | | Flags = None |
| 67 | +!PARSE-TREE: | Block |
| 68 | +!PARSE-TREE: | OmpEndDirective |
| 69 | +!PARSE-TREE: | | OmpDirectiveName -> llvm::omp::Directive = assume |
| 70 | +!PARSE-TREE: | | OmpClauseList -> |
| 71 | +!PARSE-TREE: | | Flags = None |
| 72 | +!PARSE-TREE: ExecutionPartConstruct -> ExecutableConstruct -> OpenMPConstruct -> OpenMPAssumeConstruct |
| 73 | +!PARSE-TREE: | OmpBeginDirective |
| 74 | +!PARSE-TREE: | | OmpDirectiveName -> llvm::omp::Directive = assume |
| 75 | +!PARSE-TREE: | | OmpClauseList -> OmpClause -> Absent -> OmpAbsentClause -> llvm::omp::Directive = allocate |
| 76 | +!PARSE-TREE: | | OmpClause -> Contains -> OmpContainsClause -> llvm::omp::Directive = workshare |
| 77 | +!PARSE-TREE: | | llvm::omp::Directive = task |
| 78 | +!PARSE-TREE: | | Flags = None |
| 79 | +!PARSE-TREE: | Block |
| 80 | +!PARSE-TREE: | | ExecutionPartConstruct -> ExecutableConstruct -> BlockConstruct |
| 81 | +!PARSE-TREE: | | | BlockStmt -> |
| 82 | +!PARSE-TREE: | | | BlockSpecificationPart -> SpecificationPart |
| 83 | +!PARSE-TREE: | | | | ImplicitPart -> |
| 84 | +!PARSE-TREE: | | | Block |
| 85 | +!PARSE-TREE: | | | EndBlockStmt -> |
| 86 | +!PARSE-TREE: ExecutionPartConstruct -> ExecutableConstruct -> OpenMPConstruct -> OpenMPAssumeConstruct |
| 87 | +!PARSE-TREE: | OmpBeginDirective |
| 88 | +!PARSE-TREE: | | OmpDirectiveName -> llvm::omp::Directive = assume |
| 89 | +!PARSE-TREE: | | OmpClauseList -> OmpClause -> Holds -> OmpHoldsClause -> Expr -> EQ |
| 90 | +!PARSE-TREE: | | | Expr -> LiteralConstant -> IntLiteralConstant = '1' |
| 91 | +!PARSE-TREE: | | | Expr -> LiteralConstant -> IntLiteralConstant = '1' |
| 92 | +!PARSE-TREE: | | Flags = None |
| 93 | +!PARSE-TREE: | Block |
| 94 | +!PARSE-TREE: | | ExecutionPartConstruct -> ExecutableConstruct -> BlockConstruct |
| 95 | +!PARSE-TREE: | | | BlockStmt -> |
| 96 | +!PARSE-TREE: | | | BlockSpecificationPart -> SpecificationPart |
| 97 | +!PARSE-TREE: | | | | ImplicitPart -> |
| 98 | +!PARSE-TREE: | | | Block |
| 99 | +!PARSE-TREE: | | | EndBlockStmt -> |
| 100 | + |
| 101 | + |
32 | 102 | subroutine sub2 |
33 | 103 | integer :: r |
34 | 104 | integer :: v |
35 | | -!CHECK !$OMP ASSUME NO_OPENMP |
36 | | -!PARSE-TREE: ExecutionPartConstruct -> ExecutableConstruct -> OpenMPConstruct -> OpenMPAssumeConstruct |
37 | | -!PARSE-TREE: OmpAssumeDirective |
38 | | -!PARSE-TREE: Verbatim |
39 | | -!PARSE-TREE: OmpClauseList -> OmpClause -> NoOpenmp |
40 | | -!PARSE-TREE: Block |
41 | | -!PARSE-TREE: ExecutionPartConstruct -> ExecutableConstruct -> ActionStmt -> AssignmentStmt |
42 | | -!PARSE-TREE: Expr -> Add |
43 | | -!PARSE-TREE: OmpEndAssumeDirective |
44 | 105 | v = 87 |
45 | 106 | !$omp assume no_openmp |
46 | 107 | r = r + 1 |
47 | | -!CHECK !$OMP END ASSUME |
48 | 108 | !$omp end assume |
49 | 109 | end subroutine sub2 |
50 | | - |
| 110 | + |
| 111 | +!UNPARSE: SUBROUTINE sub2 |
| 112 | +!UNPARSE: INTEGER r |
| 113 | +!UNPARSE: INTEGER v |
| 114 | +!UNPARSE: v = 87 |
| 115 | +!UNPARSE: !$OMP ASSUME NO_OPENMP |
| 116 | +!UNPARSE: r = r+1 |
| 117 | +!UNPARSE: !$OMP END ASSUME |
| 118 | +!UNPARSE: END SUBROUTINE sub2 |
| 119 | + |
| 120 | +!PARSE-TREE: ExecutionPartConstruct -> ExecutableConstruct -> ActionStmt -> AssignmentStmt |
| 121 | +!PARSE-TREE: | Variable -> Designator -> DataRef -> Name = 'v' |
| 122 | +!PARSE-TREE: | Expr -> LiteralConstant -> IntLiteralConstant = '87' |
| 123 | +!PARSE-TREE: ExecutionPartConstruct -> ExecutableConstruct -> OpenMPConstruct -> OpenMPAssumeConstruct |
| 124 | +!PARSE-TREE: | OmpBeginDirective |
| 125 | +!PARSE-TREE: | | OmpDirectiveName -> llvm::omp::Directive = assume |
| 126 | +!PARSE-TREE: | | OmpClauseList -> OmpClause -> NoOpenmp |
| 127 | +!PARSE-TREE: | | Flags = None |
| 128 | +!PARSE-TREE: | Block |
| 129 | +!PARSE-TREE: | | ExecutionPartConstruct -> ExecutableConstruct -> ActionStmt -> AssignmentStmt |
| 130 | +!PARSE-TREE: | | | Variable -> Designator -> DataRef -> Name = 'r' |
| 131 | +!PARSE-TREE: | | | Expr -> Add |
| 132 | +!PARSE-TREE: | | | | Expr -> Designator -> DataRef -> Name = 'r' |
| 133 | +!PARSE-TREE: | | | | Expr -> LiteralConstant -> IntLiteralConstant = '1' |
| 134 | +!PARSE-TREE: | OmpEndDirective |
| 135 | +!PARSE-TREE: | | OmpDirectiveName -> llvm::omp::Directive = assume |
| 136 | +!PARSE-TREE: | | OmpClauseList -> |
| 137 | +!PARSE-TREE: | | Flags = None |
| 138 | + |
51 | 139 | program p |
52 | | -!CHECK !$OMP ASSUMES NO_OPENMP |
53 | | -!PARSE-TREE: SpecificationPart |
54 | | -!PARSE-TREE: OpenMPDeclarativeConstruct -> OpenMPDeclarativeAssumes |
55 | | -!PARSE-TREE: Verbatim |
56 | | -!PARSE-TREE: OmpClauseList -> OmpClause -> NoOpenmp |
57 | 140 | !$omp assumes no_openmp |
58 | 141 | end program p |
59 | | - |
| 142 | + |
| 143 | +!UNPARSE: PROGRAM p |
| 144 | +!UNPARSE: !$OMP ASSUMES NO_OPENMP |
| 145 | +!UNPARSE: END PROGRAM p |
| 146 | + |
| 147 | +!PARSE-TREE: OpenMPDeclarativeConstruct -> OpenMPDeclarativeAssumes |
| 148 | +!PARSE-TREE: | Verbatim |
| 149 | +!PARSE-TREE: | OmpClauseList -> OmpClause -> NoOpenmp |
0 commit comments