Skip to content

Commit fb4d40b

Browse files
committed
More tests for
1 parent fe4de72 commit fb4d40b

File tree

2 files changed

+42
-16
lines changed

2 files changed

+42
-16
lines changed

flang/lib/Lower/OpenMP/DataSharingProcessor.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,7 @@ void DataSharingProcessor::doPrivatize(
399399

400400
firOpBuilder.setInsertionPointToEnd(allocEntryBlock);
401401

402-
// TODO Delayed privatization has not been tested yet for: CharBoxValue,
402+
// TODO Delayed privatization has not been tested yet for:
403403
// CharArrayBoxValue, BoxValue, or PolymorphicValue.
404404
fir::ExtendedValue localExV =
405405
hlfir::translateToExtendedValue(
Lines changed: 41 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,18 @@
11
! Test delayed privatization for the `CHARACTER` type.
22

3+
! RUN: split-file %s %t
4+
5+
! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization \
6+
! RUN: -o - %t/dyn_len.f90 2>&1 | FileCheck %s --check-prefix=DYN_LEN
7+
! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization -o - %t/dyn_len.f90 2>&1 \
8+
! RUN: | FileCheck %s --check-prefix=DYN_LEN
9+
310
! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization \
4-
! RUN: -o - %s 2>&1 | FileCheck %s
5-
! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization -o - %s 2>&1 \
6-
! RUN: | FileCheck %s
11+
! RUN: -o - %t/static_len.f90 2>&1 | FileCheck %s --check-prefix=STATIC_LEN
12+
! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization -o - %t/static_len.f90 2>&1 \
13+
! RUN: | FileCheck %s --check-prefix=STATIC_LEN
714

15+
!--- dyn_len.f90
816
subroutine delayed_privatization_character(var1, l)
917
implicit none
1018
integer(8):: l
@@ -15,19 +23,37 @@ subroutine delayed_privatization_character(var1, l)
1523
!$omp end parallel
1624
end subroutine
1725

18-
! CHECK-LABEL: omp.private {type = firstprivate}
19-
! CHECK-SAME: @[[PRIVATIZER_SYM:.*]] : [[TYPE:!fir.boxchar<1>]] alloc {
26+
! DYN_LEN-LABEL: omp.private {type = firstprivate}
27+
! DYN_LEN-SAME: @[[PRIVATIZER_SYM:.*]] : [[TYPE:!fir.boxchar<1>]] alloc {
28+
29+
! DYN_LEN-NEXT: ^bb0(%[[PRIV_ARG:.*]]: [[TYPE]]):
30+
! DYN_LEN-NEXT: %[[UNBOX:.*]]:2 = fir.unboxchar %[[PRIV_ARG]]
31+
! DYN_LEN: %[[PRIV_ALLOC:.*]] = fir.alloca !fir.char<1,?>(%[[UNBOX]]#1 : index)
32+
! DYN_LEN-NEXT: %[[PRIV_DECL:.*]]:2 = hlfir.declare %[[PRIV_ALLOC]] typeparams %[[UNBOX]]#1
33+
! DYN_LEN-NEXT: omp.yield(%[[PRIV_DECL]]#0 : !fir.boxchar<1>)
34+
35+
! DYN_LEN-NEXT: } copy {
36+
! DYN_LEN-NEXT: ^bb0(%[[PRIV_ORIG_ARG:.*]]: [[TYPE]], %[[PRIV_PRIV_ARG:.*]]: [[TYPE]]):
37+
38+
! DYN_LEN-NEXT: hlfir.assign %[[PRIV_ORIG_ARG]] to %[[PRIV_PRIV_ARG]]
2039

21-
! CHECK-NEXT: ^bb0(%[[PRIV_ARG:.*]]: [[TYPE]]):
22-
! CHECK-NEXT: %[[UNBOX:.*]]:2 = fir.unboxchar %[[PRIV_ARG]]
23-
! CHECK: %[[PRIV_ALLOC:.*]] = fir.alloca !fir.char<1,?>(%[[UNBOX]]#1 : index)
24-
! CHECK-NEXT: %[[PRIV_DECL:.*]]:2 = hlfir.declare %[[PRIV_ALLOC]] typeparams %[[UNBOX]]#1
25-
! CHECK-NEXT: omp.yield(%[[PRIV_DECL]]#0 : !fir.boxchar<1>)
40+
! DYN_LEN-NEXT: omp.yield(%[[PRIV_PRIV_ARG]] : !fir.boxchar<1>)
41+
! DYN_LEN-NEXT: }
2642

27-
! CHECK-NEXT: } copy {
28-
! CHECK-NEXT: ^bb0(%[[PRIV_ORIG_ARG:.*]]: [[TYPE]], %[[PRIV_PRIV_ARG:.*]]: [[TYPE]]):
43+
!--- static_len.f90
44+
subroutine delayed_privatization_character_static_len(var1)
45+
implicit none
46+
character(len = 10) :: var1
47+
48+
!$omp parallel private(var1)
49+
var1 = "test"
50+
!$omp end parallel
51+
end subroutine
2952

30-
! CHECK-NEXT: hlfir.assign %[[PRIV_ORIG_ARG]] to %[[PRIV_PRIV_ARG]]
53+
! STATIC_LEN-LABEL: omp.private {type = private}
54+
! STATIC_LEN-SAME: @[[PRIVATIZER_SYM:.*]] : [[TYPE:!fir.ref<!fir.char<1,10>>]] alloc {
3155

32-
! CHECK-NEXT: omp.yield(%[[PRIV_PRIV_ARG]] : !fir.boxchar<1>)
33-
! CHECK-NEXT: }
56+
! STATIC_LEN-NEXT: ^bb0(%[[PRIV_ARG:.*]]: [[TYPE]]):
57+
! STATIC_LEN-NEXT: %[[C10:.*]] = arith.constant 10 : index
58+
! STATIC_LEN-NEXT: %[[PRIV_ALLOC:.*]] = fir.alloca !fir.char<1,10>
59+
! STATIC_LEN-NEXT: %[[PRIV_DECL:.*]]:2 = hlfir.declare %[[PRIV_ALLOC]] typeparams %[[C10]]

0 commit comments

Comments
 (0)