|
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 | + !$omp end assume |
| 17 | + |
28 | 18 | !$omp assume holds(1.eq.1) |
| 19 | + !$omp end assume |
29 | 20 | print *, r |
30 | 21 | end subroutine sub1 |
31 | 22 |
|
| 23 | +!UNPARSE: SUBROUTINE sub1 |
| 24 | +!UNPARSE: INTEGER r |
| 25 | +!UNPARSE: !$OMP ASSUME NO_OPENMP |
| 26 | +!UNPARSE: !$OMP END ASSUME |
| 27 | +!UNPARSE: !$OMP ASSUME NO_PARALLELISM |
| 28 | +!UNPARSE: !$OMP END ASSUME |
| 29 | +!UNPARSE: !$OMP ASSUME NO_OPENMP_ROUTINES |
| 30 | +!UNPARSE: !$OMP END ASSUME |
| 31 | +!UNPARSE: !$OMP ASSUME ABSENT(ALLOCATE) CONTAINS(WORKSHARE,TASK) |
| 32 | +!UNPARSE: !$OMP END ASSUME |
| 33 | +!UNPARSE: !$OMP ASSUME HOLDS(1==1) |
| 34 | +!UNPARSE: !$OMP END ASSUME |
| 35 | +!UNPARSE: PRINT *, r |
| 36 | +!UNPARSE: END SUBROUTINE sub1 |
| 37 | + |
| 38 | +!PARSE-TREE: ExecutionPartConstruct -> ExecutableConstruct -> OpenMPConstruct -> OpenMPAssumeConstruct |
| 39 | +!PARSE-TREE: | OmpBeginDirective |
| 40 | +!PARSE-TREE: | | OmpDirectiveName -> llvm::omp::Directive = assume |
| 41 | +!PARSE-TREE: | | OmpClauseList -> OmpClause -> NoOpenmp |
| 42 | +!PARSE-TREE: | | Flags = None |
| 43 | +!PARSE-TREE: | Block |
| 44 | +!PARSE-TREE: | OmpEndDirective |
| 45 | +!PARSE-TREE: | | OmpDirectiveName -> llvm::omp::Directive = assume |
| 46 | +!PARSE-TREE: | | OmpClauseList -> |
| 47 | +!PARSE-TREE: | | Flags = None |
| 48 | +!PARSE-TREE: ExecutionPartConstruct -> ExecutableConstruct -> OpenMPConstruct -> OpenMPAssumeConstruct |
| 49 | +!PARSE-TREE: | OmpBeginDirective |
| 50 | +!PARSE-TREE: | | OmpDirectiveName -> llvm::omp::Directive = assume |
| 51 | +!PARSE-TREE: | | OmpClauseList -> OmpClause -> NoParallelism |
| 52 | +!PARSE-TREE: | | Flags = None |
| 53 | +!PARSE-TREE: | Block |
| 54 | +!PARSE-TREE: | OmpEndDirective |
| 55 | +!PARSE-TREE: | | OmpDirectiveName -> llvm::omp::Directive = assume |
| 56 | +!PARSE-TREE: | | OmpClauseList -> |
| 57 | +!PARSE-TREE: | | Flags = None |
| 58 | +!PARSE-TREE: ExecutionPartConstruct -> ExecutableConstruct -> OpenMPConstruct -> OpenMPAssumeConstruct |
| 59 | +!PARSE-TREE: | OmpBeginDirective |
| 60 | +!PARSE-TREE: | | OmpDirectiveName -> llvm::omp::Directive = assume |
| 61 | +!PARSE-TREE: | | OmpClauseList -> OmpClause -> NoOpenmpRoutines |
| 62 | +!PARSE-TREE: | | Flags = None |
| 63 | +!PARSE-TREE: | Block |
| 64 | +!PARSE-TREE: | OmpEndDirective |
| 65 | +!PARSE-TREE: | | OmpDirectiveName -> llvm::omp::Directive = assume |
| 66 | +!PARSE-TREE: | | OmpClauseList -> |
| 67 | +!PARSE-TREE: | | Flags = None |
| 68 | +!PARSE-TREE: ExecutionPartConstruct -> ExecutableConstruct -> OpenMPConstruct -> OpenMPAssumeConstruct |
| 69 | +!PARSE-TREE: | OmpBeginDirective |
| 70 | +!PARSE-TREE: | | OmpDirectiveName -> llvm::omp::Directive = assume |
| 71 | +!PARSE-TREE: | | OmpClauseList -> OmpClause -> Absent -> OmpAbsentClause -> llvm::omp::Directive = allocate |
| 72 | +!PARSE-TREE: | | OmpClause -> Contains -> OmpContainsClause -> llvm::omp::Directive = workshare |
| 73 | +!PARSE-TREE: | | llvm::omp::Directive = task |
| 74 | +!PARSE-TREE: | | Flags = None |
| 75 | +!PARSE-TREE: | Block |
| 76 | +!PARSE-TREE: | OmpEndDirective |
| 77 | +!PARSE-TREE: | | OmpDirectiveName -> llvm::omp::Directive = assume |
| 78 | +!PARSE-TREE: | | OmpClauseList -> |
| 79 | +!PARSE-TREE: | | Flags = None |
| 80 | +!PARSE-TREE: ExecutionPartConstruct -> ExecutableConstruct -> OpenMPConstruct -> OpenMPAssumeConstruct |
| 81 | +!PARSE-TREE: | OmpBeginDirective |
| 82 | +!PARSE-TREE: | | OmpDirectiveName -> llvm::omp::Directive = assume |
| 83 | +!PARSE-TREE: | | OmpClauseList -> OmpClause -> Holds -> OmpHoldsClause -> Expr -> EQ |
| 84 | +!PARSE-TREE: | | | Expr -> LiteralConstant -> IntLiteralConstant = '1' |
| 85 | +!PARSE-TREE: | | | Expr -> LiteralConstant -> IntLiteralConstant = '1' |
| 86 | +!PARSE-TREE: | | Flags = None |
| 87 | +!PARSE-TREE: | Block |
| 88 | +!PARSE-TREE: | OmpEndDirective |
| 89 | +!PARSE-TREE: | | OmpDirectiveName -> llvm::omp::Directive = assume |
| 90 | +!PARSE-TREE: | | OmpClauseList -> |
| 91 | +!PARSE-TREE: | | Flags = None |
| 92 | + |
| 93 | + |
32 | 94 | subroutine sub2 |
33 | 95 | integer :: r |
34 | 96 | 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 | 97 | v = 87 |
45 | 98 | !$omp assume no_openmp |
46 | 99 | r = r + 1 |
47 | | -!CHECK !$OMP END ASSUME |
48 | 100 | !$omp end assume |
49 | 101 | end subroutine sub2 |
50 | | - |
| 102 | + |
| 103 | +!UNPARSE: SUBROUTINE sub2 |
| 104 | +!UNPARSE: INTEGER r |
| 105 | +!UNPARSE: INTEGER v |
| 106 | +!UNPARSE: v = 87 |
| 107 | +!UNPARSE: !$OMP ASSUME NO_OPENMP |
| 108 | +!UNPARSE: r = r+1 |
| 109 | +!UNPARSE: !$OMP END ASSUME |
| 110 | +!UNPARSE: END SUBROUTINE sub2 |
| 111 | + |
| 112 | +!PARSE-TREE: ExecutionPartConstruct -> ExecutableConstruct -> ActionStmt -> AssignmentStmt |
| 113 | +!PARSE-TREE: | Variable -> Designator -> DataRef -> Name = 'v' |
| 114 | +!PARSE-TREE: | Expr -> LiteralConstant -> IntLiteralConstant = '87' |
| 115 | +!PARSE-TREE: ExecutionPartConstruct -> ExecutableConstruct -> OpenMPConstruct -> OpenMPAssumeConstruct |
| 116 | +!PARSE-TREE: | OmpBeginDirective |
| 117 | +!PARSE-TREE: | | OmpDirectiveName -> llvm::omp::Directive = assume |
| 118 | +!PARSE-TREE: | | OmpClauseList -> OmpClause -> NoOpenmp |
| 119 | +!PARSE-TREE: | | Flags = None |
| 120 | +!PARSE-TREE: | Block |
| 121 | +!PARSE-TREE: | | ExecutionPartConstruct -> ExecutableConstruct -> ActionStmt -> AssignmentStmt |
| 122 | +!PARSE-TREE: | | | Variable -> Designator -> DataRef -> Name = 'r' |
| 123 | +!PARSE-TREE: | | | Expr -> Add |
| 124 | +!PARSE-TREE: | | | | Expr -> Designator -> DataRef -> Name = 'r' |
| 125 | +!PARSE-TREE: | | | | Expr -> LiteralConstant -> IntLiteralConstant = '1' |
| 126 | +!PARSE-TREE: | OmpEndDirective |
| 127 | +!PARSE-TREE: | | OmpDirectiveName -> llvm::omp::Directive = assume |
| 128 | +!PARSE-TREE: | | OmpClauseList -> |
| 129 | +!PARSE-TREE: | | Flags = None |
| 130 | + |
51 | 131 | 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 | 132 | !$omp assumes no_openmp |
58 | 133 | end program p |
59 | | - |
| 134 | + |
| 135 | +!UNPARSE: PROGRAM p |
| 136 | +!UNPARSE: !$OMP ASSUMES NO_OPENMP |
| 137 | +!UNPARSE: END PROGRAM p |
| 138 | + |
| 139 | +!PARSE-TREE: OpenMPDeclarativeConstruct -> OpenMPDeclarativeAssumes |
| 140 | +!PARSE-TREE: | Verbatim |
| 141 | +!PARSE-TREE: | OmpClauseList -> OmpClause -> NoOpenmp |
0 commit comments