[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 22:54:00 PDT 2022


This revision was automatically updated to reflect the committed changes.
Closed by commit rG2cbd4fc4424a: [flang] Support export/import OpenMP Threadprivate Flag (authored by peixin).

Repository:
  rG LLVM Github Monorepo

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.421691.patch
Type: text/x-patch
Size: 2143 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220409/9211f3f2/attachment.bin>


More information about the llvm-commits mailing list