@@ -318,10 +318,68 @@ subroutine nested_default_clause_tests
318318! CHECK: }
319319! CHECK: omp.terminator
320320! CHECK: }
321+ ! CHECK: return
321322! CHECK: }
322323 ! $omp parallel default(firstprivate)
323324 ! $omp single
324325 x = y
325326 ! $omp end single
326327 ! $omp end parallel
327328end subroutine
329+
330+ ! CHECK: func.func @_QPskipped_default_clause_checks() {
331+ ! CHECK: %[[TYPE_ADDR:.*]] = fir.address_of(@_QFskipped_default_clause_checksE.n.i1) : !fir.ref<!fir.char<1,2>>
332+ ! CHECK: %[[VAL_CONST_2:.*]] = arith.constant 2 : index
333+ ! CHECK: %[[VAL_I1_DECLARE:.*]]:2 = hlfir.declare %[[TYPE_ADDR]] typeparams %[[VAL_CONST_2]] {{.*}}
334+ ! CHECK: %[[TYPE_ADDR_IT:.*]] = fir.address_of(@_QFskipped_default_clause_checksE.n.it) : !fir.ref<!fir.char<1,2>>
335+ ! CHECK: %[[VAL_CONST_2_0:.*]] = arith.constant 2 : index
336+ ! CHECK: %[[VAL_IT_DECLARE:.*]]:2 = hlfir.declare %[[TYPE_ADDR_IT]] typeparams %[[VAL_CONST_2_0]] {{.*}}
337+ ! CHECK: %[[VAL_I_ALLOCA:.*]] = fir.alloca i32 {bindc_name = "i", uniq_name = "_QFskipped_default_clause_checksEi"}
338+ ! CHECK: %[[VAL_I_DECLARE:.*]]:2 = hlfir.declare %[[VAL_I_ALLOCA]] {{.*}}
339+ ! CHECK: %[[VAL_III_ALLOCA:.*]] = fir.alloca !fir.type<_QFskipped_default_clause_checksTit{i1:i32}> {bindc_name = "iii", uniq_name = "_QFskipped_default_clause_checksEiii"}
340+ ! CHECK: %[[VAL_III_DECLARE:.*]]:2 = hlfir.declare %[[VAL_III_ALLOCA]] {{.*}}
341+ ! CHECK: %[[VAL_X_ALLOCA:.*]] = fir.alloca i32 {bindc_name = "x", uniq_name = "_QFskipped_default_clause_checksEx"}
342+ ! CHECK: %[[VAL_X_DECLARE:.*]]:2 = hlfir.declare %[[VAL_X_ALLOCA]] {{.*}}
343+ ! CHECK: %[[VAL_Y_ALLOCA:.*]] = fir.alloca i32 {bindc_name = "y", uniq_name = "_QFskipped_default_clause_checksEy"}
344+ ! CHECK: %[[VAL_Y_DECLARE:.*]]:2 = hlfir.declare %[[VAL_Y_ALLOCA]] {{.*}}
345+ ! CHECK: %[[VAL_Z_ALLOCA:.*]] = fir.alloca i32 {bindc_name = "z", uniq_name = "_QFskipped_default_clause_checksEz"}
346+ ! CHECK: %[[VAL_Z_DECLARE:.*]]:2 = hlfir.declare %[[VAL_Z_ALLOCA]] {{.*}}
347+ subroutine skipped_default_clause_checks ()
348+ integer :: x,y,z
349+ type it
350+ integer :: i1
351+ end type
352+ type (it):: iii
353+
354+ ! CHECK: omp.parallel {
355+ ! CHECK: omp.wsloop reduction(@min_i_32 -> %[[VAL_Z_DECLARE]]#0 : !fir.ref<i32>) for (%[[ARG:.*]]) {{.*}} {
356+ ! CHECK: omp.yield
357+ ! CHECK: }
358+ ! CHECK: omp.terminator
359+ ! CHECK: }
360+ ! $omp parallel do default(private) REDUCTION(MIN:z)
361+ do i = 1 , 10
362+ x = x + MIN (y,x)
363+ enddo
364+ ! $omp end parallel do
365+
366+ ! CHECK: omp.parallel {
367+ ! CHECK: omp.terminator
368+ ! CHECK: }
369+ namelist / nam/ i
370+ ! $omp parallel default(private)
371+ write (1 ,nam )
372+ ! $omp endparallel
373+
374+ ! CHECK: omp.parallel {
375+ ! CHECK: %[[PRIVATE_III_ALLOCA:.*]] = fir.alloca !fir.type<_QFskipped_default_clause_checksTit{i1:i32}> {{.*}}
376+ ! CHECK: %[[PRIVATE_III_DECLARE:.*]]:2 = hlfir.declare %[[PRIVATE_III_ALLOCA]] {{.*}}
377+ ! CHECK: %[[PRIVATE_ADDR:.*]] = fir.address_of(@_QQro._QFskipped_default_clause_checksTit.0) : !fir.ref<!fir.type<_QFskipped_default_clause_checksTit{i1:i32}>>
378+ ! CHECK: %[[PRIVATE_PARAM:.*]]:2 = hlfir.declare %[[PRIVATE_ADDR]] {{.*}}
379+ ! CHECK: hlfir.assign %[[PRIVATE_PARAM]]#0 to %[[PRIVATE_III_DECLARE]]#0 {{.*}}
380+ ! CHECK: omp.terminator
381+ ! CHECK: }
382+ ! $omp parallel default(private)
383+ iii= it(11 )
384+ ! $omp end parallel
385+ end subroutine
0 commit comments