! { dg-do compile } ! { dg-options "-O -fdump-tree-cunroll-details -fdump-rtl-loop2_unroll-details" } ! Test that ! #pragma GCC unroll n ! works subroutine test1(a) implicit NONE integer :: a(8) integer (kind=4) :: i !GCC$ unroll 8 DO i=1, 8, 1 call dummy(a(i)) ENDDO ! { dg-final { scan-tree-dump "12:.*: loop with 7 iterations completely unrolled" "cunroll" } } */ end subroutine test1 subroutine test2(a, n) implicit NONE integer :: a(n) integer (kind=1), intent(in) :: n integer (kind=4) :: i !GCC$ unroll 8 DO i=1, n, 1 call dummy(a(i)) ENDDO ! { dg-final { scan-rtl-dump "24:.: optimized: loop unrolled 7 times" "loop2_unroll" } } end subroutine test2 subroutine test3(a, n) implicit NONE integer (kind=1), intent(in) :: n integer :: a(n) integer (kind=4) :: i !GCC$ unroll 8 DO i=n, 1, -1 call dummy(a(i)) ENDDO ! { dg-final { scan-rtl-dump "36:.: optimized: loop unrolled 7 times" "loop2_unroll" } } end subroutine test3 subroutine test4(a, n) implicit NONE integer (kind=1), intent(in) :: n integer :: a(n) integer (kind=4) :: i !GCC$ unroll 8 DO i=1, n, 2 call dummy(a(i)) ENDDO ! { dg-final { scan-rtl-dump "48:.: optimized: loop unrolled 7 times" "loop2_unroll" } } end subroutine test4