| ! RUN: %flang_fc1 -fdebug-unparse %s 2>&1 | FileCheck %s |
| |
| ! Test that compiler directives can appear in various places. |
| |
| #define PROC(KIND) \ |
| interface; integer(KIND) function foo(a); \ |
| integer(KIND), intent(in) :: a; \ |
| !dir$ ignore_tkr a; \ |
| end; end interface |
| |
| !dir$ integer |
| module m |
| !dir$ integer |
| use iso_fortran_env |
| !dir$ integer |
| implicit integer(a-z) |
| !dir$ integer |
| !dir$ integer=64 |
| !dir$ integer = 64 |
| !dir$ integer = 64 |
| PROC(4) |
| !dir$ optimize:1 |
| !dir$ optimize : 1 |
| !dir$ loop count (10000) |
| !dir$ loop count (1, 500, 5000, 10000) |
| type stuff |
| real(8), allocatable :: d(:) |
| !dir$ align : 1024 :: d |
| end type stuff |
| end |
| |
| subroutine vector_always |
| !dir$ vector always |
| ! CHECK: !DIR$ VECTOR ALWAYS |
| do i=1,10 |
| enddo |
| end subroutine |
| |
| subroutine unroll |
| !dir$ unroll |
| ! CHECK: !DIR$ UNROLL |
| do i=1,10 |
| enddo |
| !dir$ unroll 2 |
| ! CHECK: !DIR$ UNROLL 2 |
| do i=1,10 |
| enddo |
| !dir$ nounroll |
| ! CHECK: !DIR$ NOUNROLL |
| do i=1,10 |
| enddo |
| end subroutine |
| |
| subroutine unroll_and_jam |
| !dir$ unroll_and_jam |
| ! CHECK: !DIR$ UNROLL_AND_JAM |
| do i=1,10 |
| enddo |
| !dir$ unroll_and_jam 2 |
| ! CHECK: !DIR$ UNROLL_AND_JAM 2 |
| do i=1,10 |
| enddo |
| !dir$ nounroll_and_jam |
| ! CHECK: !DIR$ NOUNROLL_AND_JAM |
| do i=1,10 |
| enddo |
| end subroutine |
| |
| subroutine no_vector |
| !dir$ novector |
| ! CHECK: !DIR$ NOVECTOR |
| do i=1,10 |
| enddo |
| end subroutine |