[PATCH] D120396: [flang] Support export/import OpenMP Threadprivate Flag
Peixin Qiao via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Apr 8 20:18:32 PDT 2022
peixin updated this revision to Diff 421674.
peixin added a comment.
Rebase before land.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D120396/new/
https://reviews.llvm.org/D120396
Files:
flang/lib/Semantics/mod-file.cpp
flang/test/Semantics/modfile47.f90
Index: flang/test/Semantics/modfile47.f90
===================================================================
--- /dev/null
+++ flang/test/Semantics/modfile47.f90
@@ -0,0 +1,35 @@
+! RUN: %python %S/test_modfile.py %s %flang_fc1 -fopenmp
+! Check correct modfile generation for OpenMP threadprivate directive.
+
+module m
+ implicit none
+ type :: my_type(kind_param, len_param)
+ integer, KIND :: kind_param
+ integer, LEN :: len_param
+ integer :: t_i
+ integer :: t_arr(10)
+ end type
+ type(my_type(kind_param=2, len_param=4)) :: t
+ real, dimension(3) :: thrtest
+ real :: x
+ common /blk/ x
+
+ !$omp threadprivate(thrtest, t, /blk/)
+end
+
+!Expect: m.mod
+!module m
+!type::my_type(kind_param,len_param)
+!integer(4),kind::kind_param
+!integer(4),len::len_param
+!integer(4)::t_i
+!integer(4)::t_arr(1_8:10_8)
+!end type
+!type(my_type(kind_param=2_4,len_param=4_4))::t
+!!$omp threadprivate(t)
+!real(4)::thrtest(1_8:3_8)
+!!$omp threadprivate(thrtest)
+!real(4)::x
+!!$omp threadprivate(x)
+!common/blk/x
+!end
Index: flang/lib/Semantics/mod-file.cpp
===================================================================
--- flang/lib/Semantics/mod-file.cpp
+++ flang/lib/Semantics/mod-file.cpp
@@ -322,7 +322,12 @@
},
[](const HostAssocDetails &) {},
[](const MiscDetails &) {},
- [&](const auto &) { PutEntity(decls_, symbol); },
+ [&](const auto &) {
+ PutEntity(decls_, symbol);
+ if (symbol.test(Symbol::Flag::OmpThreadprivate)) {
+ decls_ << "!$omp threadprivate(" << symbol.name() << ")\n";
+ }
+ },
},
symbol.details());
}
@@ -925,6 +930,7 @@
parser::Options options;
options.isModuleFile = true;
options.features.Enable(common::LanguageFeature::BackslashEscapes);
+ options.features.Enable(common::LanguageFeature::OpenMP);
if (!isIntrinsic.value_or(false)) {
options.searchDirectories = context_.searchDirectories();
// If a directory is in both lists, the intrinsic module directory
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D120396.421674.patch
Type: text/x-patch
Size: 2143 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220409/75332cfc/attachment.bin>
More information about the llvm-commits
mailing list