[PATCH] D60568: [OpenMP] Add support for registering requires directives with the runtime

Alexey Bataev via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Apr 12 07:53:52 PDT 2019


ABataev added inline comments.


================
Comment at: lib/CodeGen/CGOpenMPRuntime.cpp:473
+  /// atomic_default_mem_order seq_cst clause.
+  OMP_REQ_ATOMIC_DEFAULT_SEQ_CST  = 0x008,
+  /// atomic_default_mem_order acq_rel clause.
----------------
YOu don't need al these flags, add only target-specific.


================
Comment at: lib/CodeGen/CGOpenMPRuntime.cpp:1254
+
+  HasRequiresUnifiedSharedMemory = false;
 }
----------------
No need to do this initialization here


================
Comment at: lib/CodeGen/CGOpenMPRuntime.cpp:8978
+    if (Clause->getClauseKind() == OMPC_unified_shared_memory) {
+      CGM.getOpenMPRuntime().HasRequiresUnifiedSharedMemory = true;
+      break;
----------------
Just `HasRequiresUnifiedSharedMemory = true;`


================
Comment at: lib/CodeGen/CGOpenMPRuntime.cpp:9045
+  // don't need to do anything.
+  if (CGM.getLangOpts().OpenMPIsDevice || OffloadEntriesInfoManager.empty())
+    return nullptr;
----------------
Just add a check for OpenMPSimd mode here and do not emit anything in this case.


================
Comment at: lib/CodeGen/CGOpenMPRuntime.cpp:9061
+    //TODO: check for other requires clauses.
+    if (HasRequiresUnifiedSharedMemory) {
+      Flags |= OMP_REQ_UNIFIED_SHARED_MEMORY;
----------------
No need for braces


================
Comment at: lib/CodeGen/CGOpenMPRuntime.cpp:9065
+    CGF.EmitRuntimeCall(createRuntimeFunction(OMPRTL__tgt_register_requires),
+        llvm::ConstantInt::get(CGF.CGM.Int64Ty, Flags));
+    CGF.FinishFunction();
----------------
`CGF.CGM.Int64Ty`->`CGM.Int64Ty`


================
Comment at: lib/CodeGen/CGOpenMPRuntime.h:1438
+  /// requires directives was used in the current module.
+  virtual llvm::Function *emitRequiresDirectiveRegFun();
+
----------------
Why do you need this vertual funtion? I think static local is going to be enough


================
Comment at: lib/CodeGen/CodeGenModule.cpp:415
+            OpenMPRuntime->emitRequiresDirectiveRegFun()) {
+      AddGlobalCtor(OpenMPRequiresDirectiveRegFun, 0, nullptr);
+    }
----------------
You can remove the third `nullptr` argument


Repository:
  rC Clang

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D60568/new/

https://reviews.llvm.org/D60568





More information about the cfe-commits mailing list