! { dg-do run } ! ! CO_BROADCAST ! program test implicit none intrinsic co_broadcast type t integer :: i character(len=1) :: c real(8) :: x(3), y(3) end type t integer :: i, j(10), stat complex :: a(5,5) character(kind=1, len=5) :: str1, errstr character(kind=4, len=8) :: str2(2) type(t) :: dt(4) i = 1 j = 55 a = 99.0 str1 = 1_"XXXXX" str2 = 4_"YYYYYYYY" dt = t(1, 'C', [1.,2.,3.], [3,3,3]) errstr = "ZZZZZ" if (this_image() == num_images()) then i = 2 j = 66 a = -99.0 str1 = 1_"abcd" str2 = 4_"12 3 4 5" dt = t(-1, 'a', [3.,1.,8.], [99,24,5]) end if sync all call co_broadcast(i, source_image=num_images(), stat=stat, errmsg=errstr) if (stat /= 0) STOP 1 if (errstr /= "ZZZZZ") STOP 2 if (i /= 2) STOP 3 call co_broadcast(j, source_image=num_images(), stat=stat, errmsg=errstr) if (stat /= 0) STOP 4 if (errstr /= "ZZZZZ") STOP 5 if (any (j /= 66)) STOP 1 call co_broadcast(a, source_image=num_images(), stat=stat, errmsg=errstr) if (stat /= 0) STOP 6 if (errstr /= "ZZZZZ") STOP 7 if (any (a /= -99.0)) STOP 2 call co_broadcast(str1, source_image=num_images(), stat=stat, errmsg=errstr) if (stat /= 0) STOP 8 if (errstr /= "ZZZZZ") STOP 9 if (str1 /= "abcd") STOP 10 call co_broadcast(str2, source_image=num_images(), stat=stat, errmsg=errstr) if (stat /= 0) STOP 11 if (errstr /= "ZZZZZ") STOP 12 if (any (str2 /= 4_"12 3 4 5")) STOP 3 call co_broadcast(dt, source_image=num_images(), stat=stat, errmsg=errstr) if (stat /= 0) STOP 13 if (errstr /= "ZZZZZ") STOP 14 if (any (dt(:)%i /= -1)) STOP 15 if (any (dt(:)%c /= 'a')) STOP 16 if (any (dt(:)%x(1) /= 3.)) STOP 17 if (any (dt(:)%x(2) /= 1.)) STOP 18 if (any (dt(:)%x(3) /= 8.)) STOP 19 if (any (dt(:)%y(1) /= 99.)) STOP 20 if (any (dt(:)%y(2) /= 24.)) STOP 21 if (any (dt(:)%y(3) /= 5.)) STOP 22 sync all dt = t(1, 'C', [1.,2.,3.], [3,3,3]) sync all if (this_image() == num_images()) then str2 = 4_"001122" dt(2:4) = t(-2, 'i', [9.,2.,3.], [4,44,321]) end if call co_broadcast(str2(::2), source_image=num_images(), stat=stat, & errmsg=errstr) if (stat /= 0) STOP 23 if (errstr /= "ZZZZZ") STOP 24 if (str2(1) /= 4_"001122") STOP 25 if (this_image() == num_images()) then if (str2(1) /= 4_"001122") STOP 26 else if (str2(2) /= 4_"12 3 4 5") STOP 27 end if call co_broadcast(dt(2::2), source_image=num_images(), stat=stat, & errmsg=errstr) if (stat /= 0) STOP 28 if (errstr /= "ZZZZZ") STOP 29 if (this_image() == num_images()) then if (any (dt(1:1)%i /= 1)) STOP 30 if (any (dt(1:1)%c /= 'C')) STOP 31 if (any (dt(1:1)%x(1) /= 1.)) STOP 32 if (any (dt(1:1)%x(2) /= 2.)) STOP 33 if (any (dt(1:1)%x(3) /= 3.)) STOP 34 if (any (dt(1:1)%y(1) /= 3.)) STOP 35 if (any (dt(1:1)%y(2) /= 3.)) STOP 36 if (any (dt(1:1)%y(3) /= 3.)) STOP 37 if (any (dt(2:)%i /= -2)) STOP 38 if (any (dt(2:)%c /= 'i')) STOP 39 if (any (dt(2:)%x(1) /= 9.)) STOP 40 if (any (dt(2:)%x(2) /= 2.)) STOP 41 if (any (dt(2:)%x(3) /= 3.)) STOP 42 if (any (dt(2:)%y(1) /= 4.)) STOP 43 if (any (dt(2:)%y(2) /= 44.)) STOP 44 if (any (dt(2:)%y(3) /= 321.)) STOP 45 else if (any (dt(1::2)%i /= 1)) STOP 46 if (any (dt(1::2)%c /= 'C')) STOP 47 if (any (dt(1::2)%x(1) /= 1.)) STOP 48 if (any (dt(1::2)%x(2) /= 2.)) STOP 49 if (any (dt(1::2)%x(3) /= 3.)) STOP 50 if (any (dt(1::2)%y(1) /= 3.)) STOP 51 if (any (dt(1::2)%y(2) /= 3.)) STOP 52 if (any (dt(1::2)%y(3) /= 3.)) STOP 53 if (any (dt(2::2)%i /= -2)) STOP 54 if (any (dt(2::2)%c /= 'i')) STOP 55 if (any (dt(2::2)%x(1) /= 9.)) STOP 56 if (any (dt(2::2)%x(2) /= 2.)) STOP 57 if (any (dt(2::2)%x(3) /= 3.)) STOP 58 if (any (dt(2::2)%y(1) /= 4.)) STOP 59 if (any (dt(2::2)%y(2) /= 44.)) STOP 60 if (any (dt(2::2)%y(3) /= 321.)) STOP 61 endif end program test