blob: d4890a38338975dbc2985e381a668b634989a8f3 [file] [log] [blame]
! { dg-do run }
! { dg-additional-options "-fdump-tree-original" }
module m
implicit none
contains
subroutine sub(y,str)
integer :: y, x, i
character(len=5) :: str
character(len=5) :: z = "abcde"
logical :: error = .false.
x = 5
z = "12345"
do concurrent (i = 1: 3) local_init(x) local_init(z) shared(error)default(none)
if (x /= 5) error = .true.
if (z /= "12345") error = .true.
x = 99
z = "XXXXX"
end do
if (x /= 5 .or. z /= "12345") stop 1
if (error) stop 2
do concurrent (i = 1: 3) local(y) local(str) shared(error) default(none)
y = 99
str = "XXXXX"
end do
if (y /= 42 .or. str /= "ABCDE") stop 3
end
end
use m
implicit none
character(len=5) :: chars = "ABCDE"
integer :: fourtytwo = 42
call sub(fourtytwo, chars)
end
! { dg-final { scan-tree-dump-times " integer\\(kind=4\\) x;" 2 "original" } }
! { dg-final { scan-tree-dump-times " static character\\(kind=1\\) z\\\[1:5\\\] = .abcde.;" 1 "original" } }
! { dg-final { scan-tree-dump-times " character\\(kind=1\\) z\\\[1:5\\\];" 1 "original" } }
! { dg-final { scan-tree-dump-times " integer\\(kind=4\\) y;" 1 "original" } }
! { dg-final { scan-tree-dump-times " character\\(kind=1\\) str\\\[1:5\\\];" 1 "original" } }
! { dg-final { scan-tree-dump-times " x = 5;" 1 "original" } }
! { dg-final { scan-tree-dump-times " __builtin_memmove \\(\\(void \\*\\) &z, \\(void \\*\\) &.12345.\\\[1\\\]\{lb: 1 sz: 1\}, 5\\);" 1 "original" } }
! { dg-final { scan-tree-dump-times " x = x;" 1 "original" } }
! { dg-final { scan-tree-dump-times " __builtin_memmove \\(\\(void \\*\\) &z, \\(void \\*\\)\\ &z, 5\\);" 1 "original" } }
! { dg-final { scan-tree-dump-not " y = y;" "original" } }
! { dg-final { scan-tree-dump-times " __builtin_memmove \\(\\(void \\*\\) &str, \\(void \\*\\)\\ &.XXXXX.\\\[1\\\]\{lb: 1 sz: 1\}, 5\\);" 1 "original" } }
! { dg-final { scan-tree-dump-times " __builtin_memmove \\(\\(void \\*\\) &str," 1 "original" } }