brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.6 KiB · 4944347 Raw
81 lines · plain
1! Test the Parse Tree to ensure the OpenMP Loop Transformation Construct Fuse constructs a correct sequence.2 3! RUN: %flang_fc1 -fdebug-dump-parse-tree -fopenmp -fopenmp-version=51 %s | FileCheck %s --check-prefix=CHECK-PARSE4! RUN: %flang_fc1 -fdebug-unparse -fopenmp -fopenmp-version=51 %s | FileCheck %s --check-prefix=CHECK-UNPARSE5 6subroutine loop_transformation_construct7  implicit none8  integer :: I = 109  integer :: j10 11  !$omp do12  !$omp fuse13  do i = 1, I14    continue15  end do16  do j = 1, I17    continue18  end do19  !$omp end fuse20  !$omp end do21end subroutine22 23!CHECK-PARSE: | ExecutionPart -> Block24!CHECK-PARSE-NEXT: | | ExecutionPartConstruct -> ExecutableConstruct -> OpenMPConstruct -> OpenMPLoopConstruct25!CHECK-PARSE-NEXT: | | | OmpBeginLoopDirective26!CHECK-PARSE-NEXT: | | | | OmpDirectiveName -> llvm::omp::Directive = do27!CHECK-PARSE-NEXT: | | | | OmpClauseList ->28!CHECK-PARSE-NEXT: | | | | Flags = {}29!CHECK-PARSE-NEXT: | | | Block30!CHECK-PARSE-NEXT: | | | | ExecutionPartConstruct -> ExecutableConstruct -> OpenMPConstruct -> OpenMPLoopConstruct31!CHECK-PARSE-NEXT: | | | | | OmpBeginLoopDirective32!CHECK-PARSE-NEXT: | | | | | | OmpDirectiveName -> llvm::omp::Directive = fuse33!CHECK-PARSE-NEXT: | | | | | | OmpClauseList ->34!CHECK-PARSE-NEXT: | | | | | | Flags = {}35!CHECK-PARSE-NEXT: | | | | | Block36!CHECK-PARSE-NEXT: | | | | | | ExecutionPartConstruct -> ExecutableConstruct -> DoConstruct37!CHECK-PARSE-NEXT: | | | | | | | NonLabelDoStmt38!CHECK-PARSE-NEXT: | | | | | | | | LoopControl -> LoopBounds39!CHECK-PARSE-NEXT: | | | | | | | | | Scalar -> Name = 'i'40!CHECK-PARSE-NEXT: | | | | | | | | | Scalar -> Expr = '1_4'41!CHECK-PARSE-NEXT: | | | | | | | | | | LiteralConstant -> IntLiteralConstant = '1'42!CHECK-PARSE-NEXT: | | | | | | | | | Scalar -> Expr = 'i'43!CHECK-PARSE-NEXT: | | | | | | | | | | Designator -> DataRef -> Name = 'i'44!CHECK-PARSE-NEXT: | | | | | | | Block45!CHECK-PARSE-NEXT: | | | | | | | | ExecutionPartConstruct -> ExecutableConstruct -> ActionStmt -> ContinueStmt46!CHECK-PARSE-NEXT: | | | | | | | EndDoStmt ->47!CHECK-PARSE-NEXT: | | | | | | ExecutionPartConstruct -> ExecutableConstruct -> DoConstruct48!CHECK-PARSE-NEXT: | | | | | | | NonLabelDoStmt49!CHECK-PARSE-NEXT: | | | | | | | | LoopControl -> LoopBounds50!CHECK-PARSE-NEXT: | | | | | | | | | Scalar -> Name = 'j'51!CHECK-PARSE-NEXT: | | | | | | | | | Scalar -> Expr = '1_4'52!CHECK-PARSE-NEXT: | | | | | | | | | | LiteralConstant -> IntLiteralConstant = '1'53!CHECK-PARSE-NEXT: | | | | | | | | | Scalar -> Expr = 'i'54!CHECK-PARSE-NEXT: | | | | | | | | | | Designator -> DataRef -> Name = 'i'55!CHECK-PARSE-NEXT: | | | | | | | Block56!CHECK-PARSE-NEXT: | | | | | | | | ExecutionPartConstruct -> ExecutableConstruct -> ActionStmt -> ContinueStmt57!CHECK-PARSE-NEXT: | | | | | | | EndDoStmt ->58!CHECK-PARSE-NEXT: | | | | | OmpEndLoopDirective59!CHECK-PARSE-NEXT: | | | | | | OmpDirectiveName -> llvm::omp::Directive = fuse60!CHECK-PARSE-NEXT: | | | | | | OmpClauseList ->61!CHECK-PARSE-NEXT: | | | | | | Flags = {}62!CHECK-PARSE-NEXT: | | | OmpEndLoopDirective63!CHECK-PARSE-NEXT: | | | | OmpDirectiveName -> llvm::omp::Directive = do64!CHECK-PARSE-NEXT: | | | | OmpClauseList ->65!CHECK-PARSE-NEXT: | | | | Flags = {}66 67!CHECK-UNPARSE: SUBROUTINE loop_transformation_construct68!CHECK-UNPARSE-NEXT:  IMPLICIT NONE69!CHECK-UNPARSE-NEXT:  INTEGER :: i = 10_470!CHECK-UNPARSE-NEXT:  INTEGER j71!CHECK-UNPARSE-NEXT: !$OMP DO72!CHECK-UNPARSE-NEXT: !$OMP FUSE73!CHECK-UNPARSE-NEXT:  DO i=1_4,i74!CHECK-UNPARSE-NEXT:    CONTINUE75!CHECK-UNPARSE-NEXT:  END DO76!CHECK-UNPARSE-NEXT:  DO j=1_4,i77!CHECK-UNPARSE-NEXT:    CONTINUE78!CHECK-UNPARSE-NEXT:  END DO79!CHECK-UNPARSE-NEXT: !$OMP END FUSE80!CHECK-UNPARSE-NEXT: !$OMP END DO81