r234568 - [OPENMP] Fixed incompatibility with MSVC, NFC.

Alexey Bataev a.bataev at hotmail.com
Thu Apr 9 22:32:31 PDT 2015


Author: abataev
Date: Fri Apr 10 00:32:31 2015
New Revision: 234568

URL: http://llvm.org/viewvc/llvm-project?rev=234568&view=rev
Log:
[OPENMP] Fixed incompatibility with MSVC, NFC.

Modified:
    cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp

Modified: cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp?rev=234568&r1=234567&r2=234568&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp Fri Apr 10 00:32:31 2015
@@ -983,20 +983,23 @@ void CGOpenMPRuntime::emitCriticalRegion
                                          StringRef CriticalName,
                                          const RegionCodeGenTy &CriticalOpGen,
                                          SourceLocation Loc) {
-  auto RegionLock = getCriticalRegionLock(CriticalName);
+  auto *RegionLock = getCriticalRegionLock(CriticalName);
   // __kmpc_critical(ident_t *, gtid, Lock);
   // CriticalOpGen();
   // __kmpc_end_critical(ident_t *, gtid, Lock);
   // Prepare arguments and build a call to __kmpc_critical
-  llvm::Value *Args[] = {emitUpdateLocation(CGF, Loc), getThreadID(CGF, Loc),
-                         RegionLock};
   {
     CodeGenFunction::RunCleanupsScope Scope(CGF);
+    auto *ULoc = emitUpdateLocation(CGF, Loc);
+    auto *ThreadID = getThreadID(CGF, Loc);
+    llvm::Value *Args[] = {ULoc, ThreadID, RegionLock};
     CGF.EmitRuntimeCall(createRuntimeFunction(OMPRTL__kmpc_critical), Args);
     emitInlinedDirective(CGF, CriticalOpGen);
     // Build a call to __kmpc_end_critical
     CGF.EHStack.pushCleanup<CallEndCleanup>(
-        NormalAndEHCleanup, [this, Args](CodeGenFunction &CGF) {
+        NormalAndEHCleanup,
+        [this, ULoc, ThreadID, RegionLock](CodeGenFunction &CGF) {
+          llvm::Value *Args[] = {ULoc, ThreadID, RegionLock};
           CGF.EmitRuntimeCall(createRuntimeFunction(OMPRTL__kmpc_end_critical),
                               Args);
         });
@@ -1029,7 +1032,9 @@ void CGOpenMPRuntime::emitMasterRegion(C
   //   __kmpc_end_master(ident_t *, gtid);
   // }
   // Prepare arguments and build a call to __kmpc_master
-  llvm::Value *Args[] = {emitUpdateLocation(CGF, Loc), getThreadID(CGF, Loc)};
+  auto *ULoc = emitUpdateLocation(CGF, Loc);
+  auto *ThreadID = getThreadID(CGF, Loc);
+  llvm::Value *Args[] = {ULoc, ThreadID};
   auto *IsMaster =
       CGF.EmitRuntimeCall(createRuntimeFunction(OMPRTL__kmpc_master), Args);
   emitIfStmt(CGF, IsMaster, [&](CodeGenFunction &CGF) -> void {
@@ -1052,7 +1057,8 @@ void CGOpenMPRuntime::emitMasterRegion(C
     // fallthrough rather than pushing a normal cleanup for it.
     // Build a call to __kmpc_end_critical
     CGF.EHStack.pushCleanup<CallEndCleanup>(
-        NormalAndEHCleanup, [this, Args](CodeGenFunction &CGF) {
+        NormalAndEHCleanup, [this, ULoc, ThreadID](CodeGenFunction &CGF) {
+          llvm::Value *Args[] = {ULoc, ThreadID};
           CGF.EmitRuntimeCall(createRuntimeFunction(OMPRTL__kmpc_end_master),
                               Args);
         });
@@ -1161,7 +1167,9 @@ void CGOpenMPRuntime::emitSingleRegion(C
     CGF.InitTempAlloca(DidIt, CGF.Builder.getInt32(0));
   }
   // Prepare arguments and build a call to __kmpc_single
-  llvm::Value *Args[] = {emitUpdateLocation(CGF, Loc), getThreadID(CGF, Loc)};
+  auto *ULoc = emitUpdateLocation(CGF, Loc);
+  auto *ThreadID = getThreadID(CGF, Loc);
+  llvm::Value *Args[] = {ULoc, ThreadID};
   auto *IsSingle =
       CGF.EmitRuntimeCall(createRuntimeFunction(OMPRTL__kmpc_single), Args);
   emitIfStmt(CGF, IsSingle, [&](CodeGenFunction &CGF) -> void {
@@ -1187,7 +1195,8 @@ void CGOpenMPRuntime::emitSingleRegion(C
     // It is analyzed in Sema, so we can just call __kmpc_end_single() on
     // fallthrough rather than pushing a normal cleanup for it.
     CGF.EHStack.pushCleanup<CallEndCleanup>(
-        NormalAndEHCleanup, [this, Args](CodeGenFunction &CGF) {
+        NormalAndEHCleanup, [this, ULoc, ThreadID](CodeGenFunction &CGF) {
+          llvm::Value *Args[] = {ULoc, ThreadID};
           CGF.EmitRuntimeCall(createRuntimeFunction(OMPRTL__kmpc_end_single),
                               Args);
         });





More information about the cfe-commits mailing list