@@ -318,10 +318,68 @@ subroutine nested_default_clause_tests
318
318
! CHECK: }
319
319
! CHECK: omp.terminator
320
320
! CHECK: }
321
+ ! CHECK: return
321
322
! CHECK: }
322
323
! $omp parallel default(firstprivate)
323
324
! $omp single
324
325
x = y
325
326
! $omp end single
326
327
! $omp end parallel
327
328
end 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