ABataev added inline comments.
================
Comment at: clang/lib/Sema/SemaOpenMP.cpp:3211-3213
+ VD->getStorageClass() == SC_Static &&
+ (CanonicalVD->getDeclContext()->isNamespace() ||
+ !VD->isLocalVarDeclOrParm())) {
----------------
atmnpatel wrote:
> ABataev wrote:
> > I think just `!VD->hasLocalStorage()` should be enough here. Shall it work
> > for static locals too or just for globals?
> Just for globals.
What about static data members?
================
Comment at: clang/test/OpenMP/parallel_master_codegen.cpp:145
+
+// CK31: define internal {{.*}}void [[OMP_OUTLINED]](i32* noalias
[[GTID:%.+]], i32* noalias [[BTID:%.+]], i32* dereferenceable(4) [[A_VAL]])
+// CK31: [[GTID_ADDR:%.+]] = alloca i32*
----------------
atmnpatel wrote:
> ABataev wrote:
> > Some extra work is required. The variable should not be captured by
> > reference, must be captured by value. Also, a test with calling
> > constructors/destructors is required.
> Sorry, I added a test with constructors/destructors with codegen. The
> variable capture discussion was had above and I'm pretty sure that the
> conclusion above (correct me if I'm wrong) was that its not ideal, but its
> fine for now and will be adjusted with the upcoming OMPIRBuilder.
It shall emit the correct code anyway. With `default(firstprivate)` and
explicit `firstprivate` clause the codegen will be different and it may lead to
an incompatibility with the existing libraries/object files.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D75591/new/
https://reviews.llvm.org/D75591
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits