Index: flang/test/Semantics/error_stop1a.f90
===================================================================
--- flang/test/Semantics/error_stop1a.f90
+++ flang/test/Semantics/error_stop1a.f90
@@ -14,7 +14,7 @@
   !___ standard-conforming statements ____________________________
   error stop
 
-  !___ standard-conforming statement with stop-code ______________
+  !___ standard-conforming statements with stop-code ______________
   error stop int_code
   error stop 5
   error stop (5)
@@ -32,7 +32,7 @@
   error stop array_coarray(1)
   error stop array_coarray(1)[1]
 
-  !___ standard-conforming statement with stop-code and quiet= ___
+  !___ standard-conforming statements with stop-code and quiet= ___
   error stop int_code, quiet=bool
   error stop int_code, quiet=logical_array(1)
   error stop int_code, quiet=logical_coarray
@@ -40,36 +40,12 @@
   error stop int_code, quiet=.true.
   error stop (int_code), quiet=.false.
 
-  !___ non-standard-conforming statement _________________________
+  !___ non-standard-conforming statements _________________________
 
   ! unknown stop-code
   !ERROR: expected execution part construct
   error stop code=int_code
 
-  ! invalid stop-code typing
-  error stop non_integer
-
-  ! invalid stop-code typing
-  error stop non_character
-
-  ! stop-code must be of default kind
-  error stop non_default_int_kind
-
-  ! stop-code must be of default kind
-  error stop non_default_char_kind
-
-  ! stop-code must be scalar
-  error stop char_array
-
-  ! stop-code must be scalar
-  error stop array_coarray[1]
-
-  ! invalid quiet= typing
-  error stop int_code, quiet=non_logical
-
-  ! quiet= must be scalar
-  error stop int_code, quiet=logical_array
-
   ! missing 'quiet='
   !ERROR: expected execution part construct
   error stop int_code, bool
Index: flang/test/Semantics/error_stop1b.f90
===================================================================
--- /dev/null
+++ flang/test/Semantics/error_stop1b.f90
@@ -0,0 +1,43 @@
+! RUN: %python %S/test_errors.py %s %flang_fc1
+! This test checks for semantic errors in error stop statements based on the
+! statement specification in section 11.4 of the Fortran 2018 standard.
+! The errors in this test would be hidden by the errors in
+! the test error_stop01a.f90 if they were included in that file,
+! and are thus tested here.
+
+program test_error_stop
+  implicit none
+
+  integer int_code, int_array(1), int_coarray[*], array_coarray(1)[*]
+  integer(kind=1) non_default_int_kind
+  character(len=128) char_code, char_array(1), char_coarray[*], non_logical
+  character(kind=4, len=128) non_default_char_kind
+  logical bool, logical_array(1), logical_coarray[*], non_integer, non_character
+
+  !___ non-standard-conforming statements _________________________
+
+  !ERROR: Stop code must be of INTEGER or CHARACTER type
+  error stop non_integer
+
+  !ERROR: Stop code must be of INTEGER or CHARACTER type
+  error stop non_character
+
+  !ERROR: INTEGER stop code must be of default kind
+  error stop non_default_int_kind
+
+  !ERROR: CHARACTER stop code must be of default kind
+  error stop non_default_char_kind
+
+  !ERROR: Must be a scalar value, but is a rank-1 array
+  error stop char_array
+
+  !ERROR: Must be a scalar value, but is a rank-1 array
+  error stop array_coarray[1]
+
+  !ERROR: Must have LOGICAL type, but is CHARACTER(KIND=1,LEN=128_8)
+  error stop int_code, quiet=non_logical
+
+  !ERROR: Must be a scalar value, but is a rank-1 array
+  error stop int_code, quiet=logical_array
+
+end program test_error_stop
Index: flang/test/Semantics/event01a.f90
===================================================================
--- flang/test/Semantics/event01a.f90
+++ flang/test/Semantics/event01a.f90
@@ -14,7 +14,7 @@
   character(len=128) error_message, co_indexed_character[*], superfluous_errmsg
   logical invalid_type
 
-  !___ standard-conforming statement ___
+  !___ standard-conforming statements ___
 
   event post(concert)
   event post(concert[1])
@@ -24,22 +24,10 @@
   event post(concert,                   errmsg=error_message)
   event post(concert, stat=sync_status, errmsg=error_message)
 
-  !___ non-standard-conforming statement ___
+  !___ non-standard-conforming statements ___
 
   !______ invalid event-variable ____________________________
 
-  ! event-variable must be event_type
-  event post(non_event)
-
-  ! event-variable must be a coarray
-  event post(non_coarray)
-
-  ! event-variable must be a scalar variable
-  event post(occurrences)
-
-  ! event-variable must be a scalar variable
-  event post(occurrences[1])
-
   ! event-variable has an unknown keyword argument
   !ERROR: expected ')'
   event post(event=concert)
@@ -50,12 +38,6 @@
   !ERROR: expected ')'
   event post(concert, status=sync_status)
 
-  ! Stat-variable must an integer scalar
-  event post(concert, stat=invalid_type)
-
-  ! Stat-variable must an integer scalar
-  event post(concert, stat=non_scalar)
-
   ! Invalid sync-stat-list: missing stat-variable
   !ERROR: expected ')'
   event post(concert, stat)
@@ -70,9 +52,6 @@
   !ERROR: expected ')'
   event post(concert, errormsg=error_message)
 
-  ! Invalid errmsg-variable argument typing
-  event post(concert, errmsg=invalid_type)
-
   ! Invalid sync-stat-list: missing 'errmsg='
   !ERROR: expected ')'
   event post(concert, error_message)
@@ -91,20 +70,4 @@
   !ERROR: expected ')'
   event post(concert, occurrences(1), stat=sync_status, errmsg=error_message)
 
-  !______ invalid sync-stat-lists: redundant sync-stat-list ____________
-
-  ! No specifier shall appear more than once in a given sync-stat-list
-  event post(concert, stat=sync_status, stat=superfluous_stat)
-
-  ! No specifier shall appear more than once in a given sync-stat-list
-  event post(concert, errmsg=error_message, errmsg=superfluous_errmsg)
-
-  !______ invalid sync-stat-lists: coindexed stat-variable ____________
-
-  ! Check constraint C1173 from the Fortran 2018 standard
-  event post(concert, stat=co_indexed_integer[1])
-
-  ! Check constraint C1173 from the Fortran 2018 standard
-  event post(concert, errmsg=co_indexed_character[1])
-
 end program test_event_post
Index: flang/test/Semantics/event01b.f90
===================================================================
--- /dev/null
+++ flang/test/Semantics/event01b.f90
@@ -0,0 +1,65 @@
+! RUN: %python %S/test_errors.py %s %flang_fc1
+! This test checks for semantic errors in event post statements based on the
+! statement specification in section 11.6.7 of the Fortran 2018 standard.
+! Some of the errors in this test would be hidden by the errors in
+! the test event01a.f90 if they were included in that file,
+! and are thus tested here.
+
+program test_event_post
+  use iso_fortran_env, only : event_type
+  implicit none
+
+  ! event_type variables must be coarrays
+  type(event_type) non_coarray
+
+  type(event_type) concert[*], occurrences(2)[*]
+  integer non_event[*], sync_status, co_indexed_integer[*], superfluous_stat, non_scalar(1)
+  character(len=128) error_message, co_indexed_character[*], superfluous_errmsg
+  logical invalid_type
+
+  !___ non-standard-conforming statements ___
+
+  !______ invalid event-variable ____________________________
+
+  ! event-variable must be event_type
+  event post(non_event)
+
+  ! event-variable must be a coarray
+  event post(non_coarray)
+
+  !ERROR: Must be a scalar value, but is a rank-1 array
+  event post(occurrences)
+
+  !ERROR: Must be a scalar value, but is a rank-1 array
+  event post(occurrences[1])
+
+  !______ invalid sync-stat-lists: invalid stat= ____________
+
+  !ERROR: Must have INTEGER type, but is LOGICAL(4)
+  event post(concert, stat=invalid_type)
+
+  !ERROR: Must be a scalar value, but is a rank-1 array
+  event post(concert, stat=non_scalar)
+
+  !______ invalid sync-stat-lists: invalid errmsg= ____________
+
+  !ERROR: Must have CHARACTER type, but is LOGICAL(4)
+  event post(concert, errmsg=invalid_type)
+
+  !______ invalid sync-stat-lists: redundant sync-stat-list ____________
+
+  ! No specifier shall appear more than once in a given sync-stat-list
+  event post(concert, stat=sync_status, stat=superfluous_stat)
+
+  ! No specifier shall appear more than once in a given sync-stat-list
+  event post(concert, errmsg=error_message, errmsg=superfluous_errmsg)
+
+  !______ invalid sync-stat-lists: coindexed stat-variable ____________
+
+  ! Check constraint C1173 from the Fortran 2018 standard
+  event post(concert, stat=co_indexed_integer[1])
+
+  ! Check constraint C1173 from the Fortran 2018 standard
+  event post(concert, errmsg=co_indexed_character[1])
+
+end program test_event_post
Index: flang/test/Semantics/event02a.f90
===================================================================
--- flang/test/Semantics/event02a.f90
+++ flang/test/Semantics/event02a.f90
@@ -14,7 +14,7 @@
   character(len=128) error_message, non_scalar_char(1), co_indexed_character[*], superfluous_errmsg
   logical invalid_type
 
-  !_______________________ standard-conforming statement ___________________________
+  !_______________________ standard-conforming statements ___________________________
 
   event wait(concert)
   event wait(occurrences(1))
@@ -28,25 +28,10 @@
   event wait(concert,                        stat=sync_status, errmsg=error_message)
   event wait(concert, until_count=threshold, stat=sync_status, errmsg=error_message)
 
-  !____________________ non-standard-conforming statement __________________________
+  !____________________ non-standard-conforming statements __________________________
 
   !_________________________ invalid event-variable ________________________________
 
-  ! event-variable must be event_type
-  event wait(non_event)
-
-  ! event-variable must be a coarray
-  event wait(non_coarray)
-
-  ! event-variable must not be coindexed
-  event wait(concert[1])
-
-  ! event-variable must not be coindexed
-  event wait(occurrences(1)[1])
-
-  ! event-variable must be a scalar variable
-  event wait(occurrences)
-
   ! event-variable has an unknown expression
   !ERROR: expected ')'
   event wait(event=concert)
@@ -57,12 +42,6 @@
   !ERROR: expected ')'
   event wait(concert, until_amount=threshold)
 
-  ! Until-spec must be an integer scalar
-  event wait(concert, until_count=invalid_type)
-
-  ! Until-spec must be an integer scalar
-  event wait(concert, until_count=non_scalar)
-
   ! Invalid until-spec: missing until-spec variable
   !ERROR: expected ')'
   event wait(concert, until_count)
@@ -77,12 +56,6 @@
   !ERROR: expected ')'
   event wait(concert, status=sync_status)
 
-  ! Stat-variable must be an integer scalar
-  event wait(concert, stat=invalid_type)
-
-  ! Stat-variable must be an integer scalar
-  event wait(concert, stat=non_scalar)
-
   ! Invalid sync-stat-list: missing stat-variable
   !ERROR: expected ')'
   event wait(concert, stat)
@@ -97,12 +70,6 @@
   !ERROR: expected ')'
   event wait(concert, errormsg=error_message)
 
-  ! Errmsg-variable must be a character scalar
-  event wait(concert, errmsg=invalid_type)
-
-  ! Errmsg-variable must be a character scalar
-  event wait(concert, errmsg=non_scalar_char)
-
   ! Invalid sync-stat-list: missing 'errmsg='
   !ERROR: expected ')'
   event wait(concert, error_message)
@@ -119,23 +86,4 @@
   !ERROR: expected ')'
   event wait(concert, occurrences(1), stat=sync_status, errmsg=error_message)
 
-  !______ invalid event-wait-spec-lists: redundant event-wait-spec-list ____________
-
-  ! No specifier shall appear more than once in a given event-wait-spec-list
-  event wait(concert, until_count=threshold, until_count=indexed(1))
-
-  ! No specifier shall appear more than once in a given event-wait-spec-list
-  event wait(concert, stat=sync_status, stat=superfluous_stat)
-
-  ! No specifier shall appear more than once in a given event-wait-spec-list
-  event wait(concert, errmsg=error_message, errmsg=superfluous_errmsg)
-
-  !_____________ invalid sync-stat-lists: coindexed stat-variable __________________
-
-  ! Check constraint C1173 from the Fortran 2018 standard
-  event wait(concert, stat=co_indexed_integer[1])
-
-  ! Check constraint C1173 from the Fortran 2018 standard
-  event wait(concert, errmsg=co_indexed_character[1])
-
 end program test_event_wait
Index: flang/test/Semantics/event02b.f90
===================================================================
--- /dev/null
+++ flang/test/Semantics/event02b.f90
@@ -0,0 +1,82 @@
+! RUN: %python %S/test_errors.py %s %flang_fc1
+! This test checks for semantic errors in event wait statements based on the
+! statement specification in section 11.6.8 of the Fortran 2018 standard.
+! Some of the errors in this test would be hidden by the errors in
+! the test event02a.f90 if they were included in that file,
+! and are thus tested here.
+
+program test_event_wait
+  use iso_fortran_env, only : event_type
+  implicit none
+
+  ! event_type variables must be coarrays
+  type(event_type) non_coarray
+
+  type(event_type) concert[*], occurrences(2)[*]
+  integer threshold, indexed(1), non_event[*], sync_status, co_indexed_integer[*], superfluous_stat, non_scalar(1)
+  character(len=128) error_message, non_scalar_char(1), co_indexed_character[*], superfluous_errmsg
+  logical invalid_type
+
+  !____________________ non-standard-conforming statements __________________________
+
+  !_________________________ invalid event-variable ________________________________
+
+  ! event-variable must be event_type
+  event wait(non_event)
+
+  ! event-variable must be a coarray
+  event wait(non_coarray)
+
+  ! event-variable must not be coindexed
+  event wait(concert[1])
+
+  ! event-variable must not be coindexed
+  event wait(occurrences(1)[1])
+
+  !ERROR: Must be a scalar value, but is a rank-1 array
+  event wait(occurrences)
+
+  !_____________ invalid event-wait-spec-lists: invalid until-spec _________________
+
+  !ERROR: Must have INTEGER type, but is LOGICAL(4)
+  event wait(concert, until_count=invalid_type)
+
+  !ERROR: Must be a scalar value, but is a rank-1 array
+  event wait(concert, until_count=non_scalar)
+
+  !_________________ invalid sync-stat-lists: invalid stat= ________________________
+
+  !ERROR: Must have INTEGER type, but is LOGICAL(4)
+  event wait(concert, stat=invalid_type)
+
+  !ERROR: Must be a scalar value, but is a rank-1 array
+  event wait(concert, stat=non_scalar)
+
+  !________________ invalid sync-stat-lists: invalid errmsg= _______________________
+
+  !ERROR: Must have CHARACTER type, but is LOGICAL(4)
+  event wait(concert, errmsg=invalid_type)
+
+  !ERROR: Must be a scalar value, but is a rank-1 array
+  event wait(concert, errmsg=non_scalar_char)
+
+  !______ invalid event-wait-spec-lists: redundant event-wait-spec-list ____________
+
+  ! No specifier shall appear more than once in a given event-wait-spec-list
+  event wait(concert, until_count=threshold, until_count=indexed(1))
+
+  ! No specifier shall appear more than once in a given event-wait-spec-list
+  event wait(concert, stat=sync_status, stat=superfluous_stat)
+
+  ! No specifier shall appear more than once in a given event-wait-spec-list
+  event wait(concert, errmsg=error_message, errmsg=superfluous_errmsg)
+
+  !_____________ invalid sync-stat-lists: coindexed stat-variable __________________
+
+  ! Check constraint C1173 from the Fortran 2018 standard
+  event wait(concert, stat=co_indexed_integer[1])
+
+  ! Check constraint C1173 from the Fortran 2018 standard
+  event wait(concert, errmsg=co_indexed_character[1])
+
+end program test_event_wait
Index: flang/test/Semantics/synchronization01.f90
===================================================================
--- flang/test/Semantics/synchronization01.f90
+++ /dev/null
@@ -1,80 +0,0 @@
-! RUN: %python %S/test_errors.py %s %flang_fc1
-! XFAIL: *
-! This test checks for semantic errors in sync all statements based on the
-! statement specification in section 11.6.3 of the Fortran 2018 standard.
-
-program test_sync_all
-  implicit none
-
-  integer sync_status, co_indexed_integer[*], superfluous_stat, non_scalar(1)
-  character(len=128) error_message, co_indexed_character[*], superfluous_errmsg
-  logical invalid_type
-  
-  !___ standard-conforming statement ___
-
-  sync all
-  sync all(stat=sync_status)
-  sync all(                  errmsg=error_message)
-  sync all(stat=sync_status, errmsg=error_message)
- 
-  !___ non-standard-conforming statement ___
-
-  !______ invalid sync-stat-lists: invalid stat= ____________
-
-  !ERROR: expected execution part construct
-  sync all(status=sync_status)
-
-  ! Stat-variable must an integer scalar
-  !ERROR: TBD
-  sync all(stat=invalid_type)
-
-  ! Stat-variable must an integer scalar
-  !ERROR: TBD
-  sync all(stat=non_scalar)
-
-  ! Invalid sync-stat-list: missing stat-variable
-  !ERROR: expected execution part construct
-  sync all(stat)
-
-  ! Invalid sync-stat-list: missing 'stat='
-  !ERROR: expected execution part construct
-  sync all(sync_status)
-
-  !______ invalid sync-stat-lists: invalid errmsg= ____________
-
-  ! Invalid errmsg-variable keyword
-  !ERROR: expected execution part construct
-  sync all(errormsg=error_message)
-
-  !ERROR: TBD
-  sync all(errmsg=invalid_type)
-
-  ! Invalid sync-stat-list: missing 'errmsg='
-  !ERROR: expected execution part construct
-  sync all(error_message)
-
-  ! Invalid sync-stat-list: missing errmsg-variable
-  !ERROR: expected execution part construct
-  sync all(errmsg)
-
-  !______ invalid sync-stat-lists: redundant sync-stat-list ____________
-
-  ! No specifier shall appear more than once in a given sync-stat-list
-  !ERROR: to be determined
-  sync all(stat=sync_status, stat=superfluous_stat)
-
-  ! No specifier shall appear more than once in a given sync-stat-list
-  !ERROR: to be determined
-  sync all(errmsg=error_message, errmsg=superfluous_errmsg)
- 
-  !______ invalid sync-stat-lists: coindexed stat-variable ____________
-
-  ! Check constraint C1173 from the Fortran 2018 standard
-  !ERROR: to be determined
-  sync all(stat=co_indexed_integer[1])
- 
-  ! Check constraint C1173 from the Fortran 2018 standard
-  !ERROR: to be determined
-  sync all(errmsg=co_indexed_character[1])
-
-end program test_sync_all
Index: flang/test/Semantics/synchronization01a.f90
===================================================================
--- /dev/null
+++ flang/test/Semantics/synchronization01a.f90
@@ -0,0 +1,48 @@
+! RUN: %python %S/test_errors.py %s %flang_fc1
+! This test checks for errors in sync all statements based on the
+! statement specification in section 11.6.3 of the Fortran 2018 standard.
+
+program test_sync_all
+  implicit none
+
+  integer sync_status
+  character(len=128) error_message
+
+  !___ standard-conforming statement ___
+
+  sync all
+  sync all()
+  sync all(stat=sync_status)
+  sync all(                  errmsg=error_message)
+  sync all(stat=sync_status, errmsg=error_message)
+
+  !___ non-standard-conforming statement ___
+
+  !______ invalid sync-stat-lists: invalid stat= ____________
+
+  !ERROR: expected execution part construct
+  sync all(status=sync_status)
+
+  ! Invalid sync-stat-list: missing stat-variable
+  !ERROR: expected execution part construct
+  sync all(stat)
+
+  ! Invalid sync-stat-list: missing 'stat='
+  !ERROR: expected execution part construct
+  sync all(sync_status)
+
+  !______ invalid sync-stat-lists: invalid errmsg= ____________
+
+  ! Invalid errmsg-variable keyword
+  !ERROR: expected execution part construct
+  sync all(errormsg=error_message)
+
+  ! Invalid sync-stat-list: missing 'errmsg='
+  !ERROR: expected execution part construct
+  sync all(error_message)
+
+  ! Invalid sync-stat-list: missing errmsg-variable
+  !ERROR: expected execution part construct
+  sync all(errmsg)
+
+end program test_sync_all
Index: flang/test/Semantics/synchronization01b.f90
===================================================================
--- /dev/null
+++ flang/test/Semantics/synchronization01b.f90
@@ -0,0 +1,37 @@
+! RUN: %python %S/test_errors.py %s %flang_fc1
+! This test checks for semantic errors in sync all statements.
+! Some of the errors in this test would be hidden by the errors in
+! the test synchronization01a.f90 if they were included in that file,
+! and are thus tested here.
+
+program test_sync_all
+  implicit none
+
+  integer sync_status, co_indexed_integer[*], superfluous_stat, non_scalar(1)
+  character(len=128) error_message, co_indexed_character[*], superfluous_errmsg
+  logical invalid_type
+
+  !___ non-standard-conforming statements ___
+
+  !ERROR: Must have INTEGER type, but is LOGICAL(4)
+  sync all(stat=invalid_type)
+
+  !ERROR: Must be a scalar value, but is a rank-1 array
+  sync all(stat=non_scalar)
+
+  !ERROR: Must have CHARACTER type, but is LOGICAL(4)
+  sync all(errmsg=invalid_type)
+
+  ! No specifier shall appear more than once in a given sync-stat-list
+  sync all(stat=sync_status, stat=superfluous_stat)
+
+  ! No specifier shall appear more than once in a given sync-stat-list
+  sync all(errmsg=error_message, errmsg=superfluous_errmsg)
+
+  ! Fortran 2018 standard C1173: `stat` shall not be coindexed
+  sync all(stat=co_indexed_integer[1])
+
+  ! Fortran 2018 standard C1173: `errmsg` shall not be coindexed
+  sync all(errmsg=co_indexed_character[1])
+
+end program test_sync_all
Index: flang/test/Semantics/synchronization02a.f90
===================================================================
--- flang/test/Semantics/synchronization02a.f90
+++ flang/test/Semantics/synchronization02a.f90
@@ -1,15 +1,12 @@
 ! RUN: %python %S/test_errors.py %s %flang_fc1
-! XFAIL: *
-! Check for semantic errors in sync images statements
+! Check for errors in sync images statements
 
 program test_sync_images
   implicit none
 
-  integer, parameter :: invalid_rank(*,*) = reshape([1], [1,1])
-  integer sync_status, non_scalar(2), superfluous_stat, coindexed_integer[*], me
-  character(len=128) error_message, superfluous_errmsg, coindexed_character[*]
-  logical invalid_type
-  
+  integer sync_status, me
+  character(len=128) error_message
+
   !___ standard-conforming statement ___
 
   sync images(*, stat=sync_status, errmsg=error_message)
@@ -31,33 +28,15 @@
 
   !___ non-standard-conforming statement ___
 
-  !______ invalid image sets ______
-
-  ! Image set shall not depend on the value of stat-variable
-  !ERROR: TBD
-  sync images(sync_status, stat=sync_status)
-
-  ! Image set shall not depend on the value of errmsg-variable
-  !ERROR: TBD
-  sync images(len(error_message), errmsg=error_message)
+  !ERROR: expected '('
+  sync images
 
-  ! Image set shall be a scalar or rank-1 array
-  !ERROR: TBD
-  sync images(invalid_rank)
- 
   !______ invalid sync-stat-lists: invalid stat= ____________
 
   ! Invalid sync-stat-list keyword
   !ERROR: expected ')'
   sync images(1, status=sync_status)
 
-  !ERROR: TBD
-  sync images([1], stat=invalid_type)
-
-  ! Stat-variable must an integer scalar
-  !ERROR: TBD
-  sync images(*, stat=non_scalar)
- 
   ! Invalid sync-stat-list: missing stat-variable
   !ERROR: expected ')'
   sync images(1, stat)
@@ -72,9 +51,6 @@
   !ERROR: expected ')'
   sync images(*, errormsg=error_message)
 
-  !ERROR: TBD
-  sync images(1, errmsg=invalid_type)
-
   ! Invalid sync-stat-list: missing 'errmsg='
   !ERROR: expected ')'
   sync images([1], error_message)
@@ -83,24 +59,4 @@
   !ERROR: expected ')'
   sync images(*, errmsg)
 
-  !______ invalid sync-stat-lists: redundant sync-stat-list ____________
-
-  ! No specifier shall appear more than once in a given sync-stat-list
-  !ERROR: to be determined
-  sync images(1, stat=sync_status, stat=superfluous_stat)
-
-  ! No specifier shall appear more than once in a given sync-stat-list
-  !ERROR: to be determined
-  sync images([1], errmsg=error_message, errmsg=superfluous_errmsg)
- 
-  !______ invalid sync-stat-lists: coindexed stat-variable ____________
-
-  ! Check constraint C1173 from the Fortran 2018 standard
-  !ERROR: to be determined
-  sync images(*, stat=coindexed_integer[1])
- 
-  ! Check constraint C1173 from the Fortran 2018 standard
-  !ERROR: to be determined
-  sync images(1, errmsg=coindexed_character[1])
-
 end program test_sync_images
Index: flang/test/Semantics/synchronization02b.f90
===================================================================
--- /dev/null
+++ flang/test/Semantics/synchronization02b.f90
@@ -0,0 +1,47 @@
+! RUN: %python %S/test_errors.py %s %flang_fc1
+! Check for semantic errors in sync images statements.
+! Some of the errors in this test would be hidden by the errors in
+! the test synchronization02a.f90 if they were included in that file,
+! and are thus tested here.
+
+program test_sync_images
+  implicit none
+
+  integer, parameter :: invalid_rank(*,*) = reshape([1], [1,1])
+  integer sync_status, non_scalar(2), superfluous_stat, coindexed_integer[*]
+  character(len=128) error_message, superfluous_errmsg, coindexed_character[*]
+  logical invalid_type
+
+  !___ non-standard-conforming statements ___
+
+  ! Image set shall not depend on the value of stat-variable
+  sync images(sync_status, stat=sync_status)
+
+  ! Image set shall not depend on the value of errmsg-variable
+  sync images(len(error_message), errmsg=error_message)
+
+  ! Image set shall be a scalar or rank-1 array
+  sync images(invalid_rank)
+
+  !ERROR: Must have INTEGER type, but is LOGICAL(4)
+  sync images([1], stat=invalid_type)
+
+  !ERROR: Must be a scalar value, but is a rank-1 array
+  sync images(*, stat=non_scalar)
+
+  !ERROR: Must have CHARACTER type, but is LOGICAL(4)
+  sync images(1, errmsg=invalid_type)
+
+  ! No specifier shall appear more than once in a given sync-stat-list
+  sync images(1, stat=sync_status, stat=superfluous_stat)
+
+  ! No specifier shall appear more than once in a given sync-stat-list
+  sync images([1], errmsg=error_message, errmsg=superfluous_errmsg)
+
+  ! Fortran 2018 standard C1173: `stat` shall not be coindexed
+  sync images(*, stat=coindexed_integer[1])
+
+  ! Fortran 2018 standard C1173: `errmsg` shall not be coindexed
+  sync images(1, errmsg=coindexed_character[1])
+
+end program test_sync_images
Index: flang/test/Semantics/synchronization03.f90
===================================================================
--- flang/test/Semantics/synchronization03.f90
+++ /dev/null
@@ -1,80 +0,0 @@
-! RUN: %python %S/test_errors.py %s %flang_fc1
-! XFAIL: *
-! This test checks for semantic errors in sync memory statements based on the
-! statement specification in section 11.6.5 of the Fortran 2018 standard.
-
-program test_sync_memory
-  implicit none
-
-  integer sync_status, co_indexed_integer[*], superfluous_stat, non_scalar(1)
-  character(len=128) error_message, co_indexed_character[*], superfluous_errmsg
-  logical invalid_type
-  
-  !___ standard-conforming statement ___
-
-  sync memory
-  sync memory(stat=sync_status)
-  sync memory(                  errmsg=error_message)
-  sync memory(stat=sync_status, errmsg=error_message)
- 
-  !___ non-standard-conforming statement ___
-
-  !______ invalid sync-stat-lists: invalid stat= ____________
-
-  !ERROR: expected execution part construct
-  sync memory(status=sync_status)
-
-  ! Stat-variable must an integer scalar
-  !ERROR: TBD
-  sync memory(stat=invalid_type)
-
-  ! Stat-variable must an integer scalar
-  !ERROR: TBD
-  sync memory(stat=non_scalar)
-
-  ! Invalid sync-stat-list: missing stat-variable
-  !ERROR: expected execution part construct
-  sync memory(stat)
-
-  ! Invalid sync-stat-list: missing 'stat='
-  !ERROR: expected execution part construct
-  sync memory(sync_status)
-
-  !______ invalid sync-stat-lists: invalid errmsg= ____________
-
-  ! Invalid errmsg-variable keyword
-  !ERROR: expected execution part construct
-  sync memory(errormsg=error_message)
-
-  !ERROR: TBD
-  sync memory(errmsg=invalid_type)
-
-  ! Invalid sync-stat-list: missing 'errmsg='
-  !ERROR: expected execution part construct
-  sync memory(error_message)
-
-  ! Invalid sync-stat-list: missing errmsg-variable
-  !ERROR: expected execution part construct
-  sync memory(errmsg)
-
-  !______ invalid sync-stat-lists: redundant sync-stat-list ____________
-
-  ! No specifier shall appear more than once in a given sync-stat-list
-  !ERROR: to be determined
-  sync memory(stat=sync_status, stat=superfluous_stat)
-
-  ! No specifier shall appear more than once in a given sync-stat-list
-  !ERROR: to be determined
-  sync memory(errmsg=error_message, errmsg=superfluous_errmsg)
- 
-  !______ invalid sync-stat-lists: coindexed stat-variable ____________
-
-  ! Check constraint C1173 from the Fortran 2018 standard
-  !ERROR: to be determined
-  sync memory(stat=co_indexed_integer[1])
- 
-  ! Check constraint C1173 from the Fortran 2018 standard
-  !ERROR: to be determined
-  sync memory(errmsg=co_indexed_character[1])
-
-end program test_sync_memory
Index: flang/test/Semantics/synchronization03a.f90
===================================================================
--- /dev/null
+++ flang/test/Semantics/synchronization03a.f90
@@ -0,0 +1,48 @@
+! RUN: %python %S/test_errors.py %s %flang_fc1
+! This test checks for errors in sync memory statements based on the
+! statement specification in section 11.6.5 of the Fortran 2018 standard.
+
+program test_sync_memory
+  implicit none
+
+  integer sync_status
+  character(len=128) error_message
+
+  !___ standard-conforming statements ___
+
+  sync memory
+  sync memory()
+  sync memory(stat=sync_status)
+  sync memory(                  errmsg=error_message)
+  sync memory(stat=sync_status, errmsg=error_message)
+
+  !___ non-standard-conforming statements ___
+
+  !______ invalid sync-stat-lists: invalid stat= ____________
+
+  !ERROR: expected execution part construct
+  sync memory(status=sync_status)
+
+  ! Invalid sync-stat-list: missing stat-variable
+  !ERROR: expected execution part construct
+  sync memory(stat)
+
+  ! Invalid sync-stat-list: missing 'stat='
+  !ERROR: expected execution part construct
+  sync memory(sync_status)
+
+  !______ invalid sync-stat-lists: invalid errmsg= ____________
+
+  ! Invalid errmsg-variable keyword
+  !ERROR: expected execution part construct
+  sync memory(errormsg=error_message)
+
+  ! Invalid sync-stat-list: missing 'errmsg='
+  !ERROR: expected execution part construct
+  sync memory(error_message)
+
+  ! Invalid sync-stat-list: missing errmsg-variable
+  !ERROR: expected execution part construct
+  sync memory(errmsg)
+
+end program test_sync_memory
Index: flang/test/Semantics/synchronization03b.f90
===================================================================
--- /dev/null
+++ flang/test/Semantics/synchronization03b.f90
@@ -0,0 +1,37 @@
+! RUN: %python %S/test_errors.py %s %flang_fc1
+! This test checks for semantic errors in sync memory statements.
+! Some of the errors in this test would be hidden by the errors in
+! the test synchronization03a.f90 if they were included in that file,
+! and are thus tested here.
+
+program test_sync_memory
+  implicit none
+
+  integer sync_status, co_indexed_integer[*], superfluous_stat, non_scalar(1)
+  character(len=128) error_message, co_indexed_character[*], superfluous_errmsg
+  logical invalid_type
+
+  !___ non-standard-conforming statements ___
+
+  !ERROR: Must have INTEGER type, but is LOGICAL(4)
+  sync memory(stat=invalid_type)
+
+  !ERROR: Must be a scalar value, but is a rank-1 array
+  sync memory(stat=non_scalar)
+
+  !ERROR: Must have CHARACTER type, but is LOGICAL(4)
+  sync memory(errmsg=invalid_type)
+
+  ! No specifier shall appear more than once in a given sync-stat-list
+  sync memory(stat=sync_status, stat=superfluous_stat)
+
+  ! No specifier shall appear more than once in a given sync-stat-list
+  sync memory(errmsg=error_message, errmsg=superfluous_errmsg)
+
+  ! Fortran 2018 standard C1173: `stat` shall not be coindexed
+  sync memory(stat=co_indexed_integer[1])
+
+  ! Fortran 2018 standard C1173: `errmsg` shall not be coindexed
+  sync memory(errmsg=co_indexed_character[1])
+
+end program test_sync_memory
Index: flang/test/Semantics/synchronization04.f90
===================================================================
--- flang/test/Semantics/synchronization04.f90
+++ /dev/null
@@ -1,91 +0,0 @@
-! RUN: %python %S/test_errors.py %s %flang_fc1
-! XFAIL: *
-! This test checks for semantic errors in sync team statements based on the
-! statement specification in section 11.6.6 of the Fortran 2018 standard.
-
-program test_sync_team
-  use iso_fortran_env, only : team_type
-  implicit none
-
-  integer sync_status, co_indexed_integer[*], superfluous_stat, non_scalar(1), not_a_team
-  character(len=128) error_message, co_indexed_character[*], superfluous_errmsg
-  logical invalid_type
-  type(team_type) warriors
-   
-  
-  !___ standard-conforming statement ___
-
-  sync team(warriors)
-  sync team(warriors, stat=sync_status)
-  sync team(warriors,                   errmsg=error_message)
-  sync team(warriors, stat=sync_status, errmsg=error_message)
- 
-  !___ non-standard-conforming statement ___
-
-  !______ missing or invalid team-value _____________________
-
-  !ERROR: TBD
-  sync team(not_a_team)
-
-  !ERROR: expected ')'
-  sync team(stat=sync_status, errmsg=error_message)
-
-  !______ invalid sync-stat-lists: invalid stat= ____________
-
-  !ERROR: expected ')'
-  sync team(warriors, status=sync_status)
-
-  ! Stat-variable must an integer scalar
-  !ERROR: TBD
-  sync team(warriors, stat=invalid_type)
-
-  ! Stat-variable must an integer scalar
-  !ERROR: TBD
-  sync team(warriors, stat=non_scalar)
-
-  ! Invalid sync-stat-list: missing stat-variable
-  !ERROR: expected ')'
-  sync team(warriors, stat)
-
-  ! Invalid sync-stat-list: missing 'stat='
-  !ERROR: expected ')'
-  sync team(warriors, sync_status)
-
-  !______ invalid sync-stat-lists: invalid errmsg= ____________
-
-  ! Invalid errmsg-variable keyword
-  !ERROR: expected ')'
-  sync team(warriors, errormsg=error_message)
-
-  !ERROR: TBD
-  sync team(warriors, errmsg=invalid_type)
-
-  ! Invalid sync-stat-list: missing 'errmsg='
-  !ERROR: expected ')'
-  sync team(warriors, error_message)
-
-  ! Invalid sync-stat-list: missing errmsg-variable
-  !ERROR: expected ')'
-  sync team(warriors, errmsg)
-
-  !______ invalid sync-stat-lists: redundant sync-stat-list ____________
-
-  ! No specifier shall appear more than once in a given sync-stat-list
-  !ERROR: to be determined
-  sync team(warriors, stat=sync_status, stat=superfluous_stat)
-
-  ! No specifier shall appear more than once in a given sync-stat-list
-  !ERROR: to be determined
-  sync team(warriors, errmsg=error_message, errmsg=superfluous_errmsg)
- 
-  !______ invalid sync-stat-lists: coindexed stat-variable ____________
-
-  ! Check constraint C1173 from the Fortran 2018 standard
-  !ERROR: to be determined
-  sync team(warriors, stat=co_indexed_integer[1])
- 
-  ! Check constraint C1173 from the Fortran 2018 standard
-  !ERROR: to be determined
-  sync team(warriors, errmsg=co_indexed_character[1])
-
-end program test_sync_team
Index: flang/test/Semantics/synchronization04a.f90
===================================================================
--- /dev/null
+++ flang/test/Semantics/synchronization04a.f90
@@ -0,0 +1,57 @@
+! RUN: %python %S/test_errors.py %s %flang_fc1
+! This test checks for errors in sync team statements based on the
+! statement specification in section 11.6.6 of the Fortran 2018 standard.
+
+program test_sync_team
+  use iso_fortran_env, only : team_type
+  implicit none
+
+  integer sync_status
+  character(len=128) error_message
+  type(team_type) warriors
+
+  !___ standard-conforming statement ___
+
+  sync team(warriors)
+  sync team(warriors, stat=sync_status)
+  sync team(warriors,                   errmsg=error_message)
+  sync team(warriors, stat=sync_status, errmsg=error_message)
+
+  !___ non-standard-conforming statement ___
+
+  !______ missing team-value _____________________
+
+  !ERROR: expected '('
+  sync team
+
+  !ERROR: expected ')'
+  sync team(stat=sync_status, errmsg=error_message)
+
+  !______ invalid sync-stat-lists: invalid stat= ____________
+
+  !ERROR: expected ')'
+  sync team(warriors, status=sync_status)
+
+  ! Invalid sync-stat-list: missing stat-variable
+  !ERROR: expected ')'
+  sync team(warriors, stat)
+
+  ! Invalid sync-stat-list: missing 'stat='
+  !ERROR: expected ')'
+  sync team(warriors, sync_status)
+
+  !______ invalid sync-stat-lists: invalid errmsg= ____________
+
+  ! Invalid errmsg-variable keyword
+  !ERROR: expected ')'
+  sync team(warriors, errormsg=error_message)
+
+  ! Invalid sync-stat-list: missing 'errmsg='
+  !ERROR: expected ')'
+  sync team(warriors, error_message)
+
+  ! Invalid sync-stat-list: missing errmsg-variable
+  !ERROR: expected ')'
+  sync team(warriors, errmsg)
+
+end program test_sync_team
Index: flang/test/Semantics/synchronization04b.f90
===================================================================
--- /dev/null
+++ flang/test/Semantics/synchronization04b.f90
@@ -0,0 +1,42 @@
+! RUN: %python %S/test_errors.py %s %flang_fc1
+! This test checks for semantic errors in sync team statements.
+! Some of the errors in this test would be hidden by the errors in
+! the test synchronization04a.f90 if they were included in that file,
+! and are thus tested here.
+
+program test_sync_team
+  use iso_fortran_env, only : team_type
+  implicit none
+
+  integer sync_status, co_indexed_integer[*], superfluous_stat, non_scalar(1), not_a_team
+  character(len=128) error_message, co_indexed_character[*], superfluous_errmsg
+  logical invalid_type
+  type(team_type) warriors
+
+  !___ non-standard-conforming statements ___
+
+  !ERROR: Team value must be of type TEAM_TYPE from module ISO_FORTRAN_ENV
+  sync team(not_a_team)
+
+  !ERROR: Must have INTEGER type, but is LOGICAL(4)
+  sync team(warriors, stat=invalid_type)
+
+  !ERROR: Must be a scalar value, but is a rank-1 array
+  sync team(warriors, stat=non_scalar)
+
+  !ERROR: Must have CHARACTER type, but is LOGICAL(4)
+  sync team(warriors, errmsg=invalid_type)
+
+  ! No specifier shall appear more than once in a given sync-stat-list
+  sync team(warriors, stat=sync_status, stat=superfluous_stat)
+
+  ! No specifier shall appear more than once in a given sync-stat-list
+  sync team(warriors, errmsg=error_message, errmsg=superfluous_errmsg)
+
+  ! Fortran 2018 standard C1173: `stat` shall not be coindexed
+  sync team(warriors, stat=co_indexed_integer[1])
+
+  ! Fortran 2018 standard C1173: `errmsg` shall not be coindexed
+  sync team(warriors, errmsg=co_indexed_character[1])
+
+end program test_sync_team