Skip to content

Commit 710441a

Browse files
committed
Added logic to work around #243 for GCC<7
Additional clarifying comments added
1 parent df3df84 commit 710441a

File tree

3 files changed

+19
-7
lines changed

3 files changed

+19
-7
lines changed

src/tests/regression/reported/CMakeLists.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ target_link_libraries(convert-before-put OpenCoarrays)
1616
add_executable(event-post issue-293-silent-event-failure.F90)
1717
target_link_libraries(event-post OpenCoarrays)
1818

19-
add_executable(issue-422-send issue-422-send.f90)
19+
add_executable(issue-422-send issue-422-send.F90)
2020
target_link_libraries(issue-422-send OpenCoarrays)
2121

22-
add_executable(issue-422-send-get issue-422-send-get.f90)
22+
add_executable(issue-422-send-get issue-422-send-get.F90)
2323
target_link_libraries(issue-422-send-get OpenCoarrays)

src/tests/regression/reported/issue-422-send-get.f90 renamed to src/tests/regression/reported/issue-422-send-get.F90

+9-3
Original file line numberDiff line numberDiff line change
@@ -46,19 +46,25 @@ program main
4646

4747
enum, bind(C)
4848
enumerator :: recipient=1, provider, getter_putter
49+
!! provider=2, getter_putter=3
4950
end enum
5051

51-
integer, parameter :: bar_size=2
52+
integer, parameter :: bar_size=2, required_images=3
5253

53-
associate( me=>this_image(), N_images=>num_images(), required_images=>maxval([recipient,provider,getter_putter]) )
54+
associate( me=>this_image(), N_images=>num_images() )
5455

5556
verify_num_images: if (N_images<required_images) then
5657
write(error_unit,*) "issue-422-send-get.f90 requires at least ",required_images," images"
5758
error stop
5859
end if verify_num_images
5960

6061
allocate(foobar%bar(bar_size)[*],source=me)
61-
!! Assign each image's identifier to each element of foobar%bar
62+
!! Assign each image's identifier to each element of foobar%bar
63+
#ifndef GCC_GE_7
64+
sync all
65+
!! Issue #243 not backported to GCC < 7: implicit sync happens
66+
!! after allocataion but before assignment
67+
#endif
6268

6369
get_put_component: if (me==getter_putter) then
6470
foobar%bar(:)[recipient] = foobar%bar(:)[provider]

src/tests/regression/reported/issue-422-send.f90 renamed to src/tests/regression/reported/issue-422-send.F90

+8-2
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,13 @@ program main
4646

4747
enum, bind(C)
4848
enumerator :: recipient=1, provider
49+
!! provider=2
4950
end enum
5051

51-
integer, parameter :: message(*)=[3,4]
52+
integer, parameter :: message(*)=[3,4], required_images=2
5253
!! Data for provider image to put on recipient image
5354

54-
associate( me=>this_image(), N_images=>num_images(), required_images=>maxval([recipient,provider]) )
55+
associate( me=>this_image(), N_images=>num_images() )
5556

5657
verify_num_images: if (N_images<required_images) then
5758
write(error_unit,*) "issue-422-send.f90 requires at least ",required_images," images"
@@ -60,6 +61,11 @@ program main
6061

6162
allocate(foobar%bar(size(message))[*],source=me)
6263
!! Assign each image's identifier to each element of foobar%bar
64+
#ifndef GCC_GE_7
65+
sync all
66+
!! Fix to #243 has not been backported to GCC < 7. Implicit sync
67+
!! happens after allocation but before sourced assignment
68+
#endif
6369

6470
get_put_component: if (me==provider) then
6571
foobar%bar(:)[recipient] = message

0 commit comments

Comments
 (0)