! REQUIRES: openmp_runtime ! RUN: %python %S/../test_errors.py %s %flang_fc1 %openmp_flags -fopenmp-version=52 ! OpenMP Version 5.2: 12.5.2 ! Various checks for DETACH Clause program detach01 use omp_lib, only: omp_event_handle_kind implicit none real :: e, x integer(omp_event_handle_kind) :: event_01, event_02(2) integer(omp_event_handle_kind), pointer :: event_03 type :: t integer(omp_event_handle_kind) :: event end type type(t) :: t_01 !ERROR: The event-handle: `e` must be of type integer(kind=omp_event_handle_kind) !$omp task detach(e) x = x + 1 !$omp end task !ERROR: If a DETACH clause appears on a directive, then the encountering task must not be a FINAL task !$omp task detach(event_01) final(.false.) x = x + 1 !$omp end task !ERROR: A variable: `event_01` that appears in a DETACH clause cannot appear on PRIVATE clause on the same construct !$omp task detach(event_01) private(event_01) x = x + 1 !$omp end task !ERROR: A variable: `event_01` that appears in a DETACH clause cannot appear on FIRSTPRIVATE clause on the same construct !$omp task detach(event_01) firstprivate(event_01) x = x + 1 !$omp end task !ERROR: A variable: `event_01` that appears in a DETACH clause cannot appear on SHARED clause on the same construct !$omp task detach(event_01) shared(event_01) x = x + 1 !$omp end task !ERROR: A variable: `event_01` that appears in a DETACH clause cannot appear on IN_REDUCTION clause on the same construct !$omp task detach(event_01) in_reduction(+:event_01) x = x + 1 !$omp end task !ERROR: A variable that is part of another variable (as an array or structure element) cannot appear in a DETACH clause !$omp task detach(event_02(1)) x = x + 1 !$omp end task !ERROR: A variable that is part of another variable (as an array or structure element) cannot appear in a DETACH clause !$omp task detach(t_01%event) x = x + 1 !$omp end task !ERROR: The event-handle: `event_03` must not have the POINTER attribute !$omp task detach(event_03) x = x + 1 !$omp end task end program