117 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 f00(x)5 integer :: x6 !$omp do linear(x)7 do x = 1, 108 enddo9 !$omp end do10end11 12!UNPARSE: SUBROUTINE f00 (x)13!UNPARSE: INTEGER x14!UNPARSE: !$OMP DO LINEAR(x)15!UNPARSE: DO x=1_4,10_416!UNPARSE: END DO17!UNPARSE: !$OMP END DO18!UNPARSE: END SUBROUTINE19 20!PARSE-TREE: OmpBeginLoopDirective21!PARSE-TREE: | OmpDirectiveName -> llvm::omp::Directive = do22!PARSE-TREE: | OmpClauseList -> OmpClause -> Linear -> OmpLinearClause23!PARSE-TREE: | | OmpObjectList -> OmpObject -> Designator -> DataRef -> Name = 'x'24!PARSE-TREE: | | bool = 'true'25!PARSE-TREE: | Flags = {}26!PARSE-TREE: DoConstruct27 28subroutine f01(x)29 integer :: x30 !$omp do linear(x : 2)31 do x = 1, 1032 enddo33 !$omp end do34end35 36!UNPARSE: SUBROUTINE f01 (x)37!UNPARSE: INTEGER x38!UNPARSE: !$OMP DO LINEAR(x: 2_4)39!UNPARSE: DO x=1_4,10_440!UNPARSE: END DO41!UNPARSE: !$OMP END DO42!UNPARSE: END SUBROUTINE43 44!PARSE-TREE: OmpBeginLoopDirective45!PARSE-TREE: | OmpDirectiveName -> llvm::omp::Directive = do46!PARSE-TREE: | OmpClauseList -> OmpClause -> Linear -> OmpLinearClause47!PARSE-TREE: | | OmpObjectList -> OmpObject -> Designator -> DataRef -> Name = 'x'48!PARSE-TREE: | | Modifier -> OmpStepSimpleModifier -> Scalar -> Integer -> Expr = '2_4'49!PARSE-TREE: | | | LiteralConstant -> IntLiteralConstant = '2'50!PARSE-TREE: | | bool = 'true'51!PARSE-TREE: | Flags = {}52!PARSE-TREE: DoConstruct53 54subroutine f02(x)55 integer :: x56 !$omp do linear(x : step(3))57 do x = 1, 1058 enddo59 !$omp end do60end61 62!UNPARSE: SUBROUTINE f02 (x)63!UNPARSE: INTEGER x64!UNPARSE: !$OMP DO LINEAR(x: STEP(3_4))65!UNPARSE: DO x=1_4,10_466!UNPARSE: END DO67!UNPARSE: !$OMP END DO68!UNPARSE: END SUBROUTINE69 70!PARSE-TREE: OmpBeginLoopDirective71!PARSE-TREE: | OmpDirectiveName -> llvm::omp::Directive = do72!PARSE-TREE: | OmpClauseList -> OmpClause -> Linear -> OmpLinearClause73!PARSE-TREE: | | OmpObjectList -> OmpObject -> Designator -> DataRef -> Name = 'x'74!PARSE-TREE: | | Modifier -> OmpStepComplexModifier -> Scalar -> Integer -> Expr = '3_4'75!PARSE-TREE: | | | LiteralConstant -> IntLiteralConstant = '3'76!PARSE-TREE: | | bool = 'true'77!PARSE-TREE: | Flags = {}78!PARSE-TREE: DoConstruct79 80subroutine f03(x)81 integer :: x82 !$omp declare simd linear(x : uval)83end84 85!UNPARSE: SUBROUTINE f03 (x)86!UNPARSE: INTEGER x87!UNPARSE: !$OMP DECLARE SIMD LINEAR(x: UVAL)88!UNPARSE: END SUBROUTINE89 90!PARSE-TREE: DeclarationConstruct -> SpecificationConstruct -> OpenMPDeclarativeConstruct -> OpenMPDeclareSimdConstruct -> OmpDirectiveSpecification91!PARSE-TREE: | OmpDirectiveName -> llvm::omp::Directive = declare simd92!PARSE-TREE: | OmpClauseList -> OmpClause -> Linear -> OmpLinearClause93!PARSE-TREE: | | OmpObjectList -> OmpObject -> Designator -> DataRef -> Name = 'x'94!PARSE-TREE: | | Modifier -> OmpLinearModifier -> Value = Uval95!PARSE-TREE: | | bool = 'true'96!PARSE-TREE: | Flags = {}97 98subroutine f04(x)99 integer :: x100 !$omp declare simd linear(x : uval, step(3))101end102 103!UNPARSE: SUBROUTINE f04 (x)104!UNPARSE: INTEGER x105!UNPARSE: !$OMP DECLARE SIMD LINEAR(x: UVAL, STEP(3_4))106!UNPARSE: END SUBROUTINE107 108!PARSE-TREE: DeclarationConstruct -> SpecificationConstruct -> OpenMPDeclarativeConstruct -> OpenMPDeclareSimdConstruct -> OmpDirectiveSpecification109!PARSE-TREE: | OmpDirectiveName -> llvm::omp::Directive = declare simd110!PARSE-TREE: | OmpClauseList -> OmpClause -> Linear -> OmpLinearClause111!PARSE-TREE: | | OmpObjectList -> OmpObject -> Designator -> DataRef -> Name = 'x'112!PARSE-TREE: | | Modifier -> OmpLinearModifier -> Value = Uval113!PARSE-TREE: | | Modifier -> OmpStepComplexModifier -> Scalar -> Integer -> Expr = '3_4'114!PARSE-TREE: | | | LiteralConstant -> IntLiteralConstant = '3'115!PARSE-TREE: | | bool = 'true'116!PARSE-TREE: | Flags = {}117