kamleshbhalui updated this revision to Diff 367953.
kamleshbhalui added a comment.
Herald added subscribers: llvm-commits, hiraditya.
Herald added a project: LLVM.
updated test and make changes local to auto generated global vars for lock.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D108421/new/
https://reviews.llvm.org/D108421
Files:
clang/lib/CodeGen/CGOpenMPRuntime.cpp
clang/test/OpenMP/critical_codegen.cpp
clang/test/OpenMP/critical_codegen_attr.cpp
llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
Index: llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
===================================================================
--- llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
+++ llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
@@ -2487,7 +2487,12 @@
Value *OpenMPIRBuilder::getOMPCriticalRegionLock(StringRef CriticalName) {
std::string Prefix = Twine("gomp_critical_user_", CriticalName).str();
std::string Name = getNameWithSeparators({Prefix, "var"}, ".", ".");
- return getOrCreateOMPInternalVariable(KmpCriticalNameTy, Name);
+ llvm::GlobalVariable *GV = cast<llvm::GlobalVariable>(
+ getOrCreateOMPInternalVariable(KmpCriticalNameTy, Name));
+ if (!GV->isDSOLocal())
+ GV->setDSOLocal(true);
+
+ return cast<llvm::Constant>(GV);
}
GlobalVariable *
Index: clang/test/OpenMP/critical_codegen_attr.cpp
===================================================================
--- clang/test/OpenMP/critical_codegen_attr.cpp
+++ clang/test/OpenMP/critical_codegen_attr.cpp
@@ -16,9 +16,9 @@
#define HEADER
// ALL: [[IDENT_T_TY:%.+]] = type { i32, i32, i32, i32, i8* }
-// ALL: [[UNNAMED_LOCK:@.+]] = common global [8 x i32] zeroinitializer
-// ALL: [[THE_NAME_LOCK:@.+]] = common global [8 x i32] zeroinitializer
-// ALL: [[THE_NAME_LOCK1:@.+]] = common global [8 x i32] zeroinitializer
+// ALL: [[UNNAMED_LOCK:@.+]] = common dso_local global [8 x i32]
zeroinitializer
+// ALL: [[THE_NAME_LOCK:@.+]] = common dso_local global [8 x i32]
zeroinitializer
+// ALL: [[THE_NAME_LOCK1:@.+]] = common dso_local global [8 x i32]
zeroinitializer
// ALL: define {{.*}}void [[FOO:@.+]]()
Index: clang/test/OpenMP/critical_codegen.cpp
===================================================================
--- clang/test/OpenMP/critical_codegen.cpp
+++ clang/test/OpenMP/critical_codegen.cpp
@@ -16,9 +16,9 @@
#define HEADER
// ALL: [[IDENT_T_TY:%.+]] = type { i32, i32, i32, i32, i8* }
-// ALL: [[UNNAMED_LOCK:@.+]] = common global [8 x i32] zeroinitializer
-// ALL: [[THE_NAME_LOCK:@.+]] = common global [8 x i32] zeroinitializer
-// ALL: [[THE_NAME_LOCK1:@.+]] = common global [8 x i32] zeroinitializer
+// ALL: [[UNNAMED_LOCK:@.+]] = common dso_local global [8 x i32]
zeroinitializer
+// ALL: [[THE_NAME_LOCK:@.+]] = common dso_local global [8 x i32]
zeroinitializer
+// ALL: [[THE_NAME_LOCK1:@.+]] = common dso_local global [8 x i32]
zeroinitializer
// ALL: define {{.*}}void [[FOO:@.+]]()
Index: clang/lib/CodeGen/CGOpenMPRuntime.cpp
===================================================================
--- clang/lib/CodeGen/CGOpenMPRuntime.cpp
+++ clang/lib/CodeGen/CGOpenMPRuntime.cpp
@@ -2189,7 +2189,12 @@
llvm::Value *CGOpenMPRuntime::getCriticalRegionLock(StringRef CriticalName) {
std::string Prefix = Twine("gomp_critical_user_", CriticalName).str();
std::string Name = getName({Prefix, "var"});
- return getOrCreateInternalVariable(KmpCriticalNameTy, Name);
+ llvm::GlobalVariable *GV = cast<llvm::GlobalVariable>(
+ getOrCreateInternalVariable(KmpCriticalNameTy, Name));
+ if (!GV->isDSOLocal())
+ GV->setDSOLocal(true);
+
+ return cast<llvm::Constant>(GV);
}
namespace {
Index: llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
===================================================================
--- llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
+++ llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
@@ -2487,7 +2487,12 @@
Value *OpenMPIRBuilder::getOMPCriticalRegionLock(StringRef CriticalName) {
std::string Prefix = Twine("gomp_critical_user_", CriticalName).str();
std::string Name = getNameWithSeparators({Prefix, "var"}, ".", ".");
- return getOrCreateOMPInternalVariable(KmpCriticalNameTy, Name);
+ llvm::GlobalVariable *GV = cast<llvm::GlobalVariable>(
+ getOrCreateOMPInternalVariable(KmpCriticalNameTy, Name));
+ if (!GV->isDSOLocal())
+ GV->setDSOLocal(true);
+
+ return cast<llvm::Constant>(GV);
}
GlobalVariable *
Index: clang/test/OpenMP/critical_codegen_attr.cpp
===================================================================
--- clang/test/OpenMP/critical_codegen_attr.cpp
+++ clang/test/OpenMP/critical_codegen_attr.cpp
@@ -16,9 +16,9 @@
#define HEADER
// ALL: [[IDENT_T_TY:%.+]] = type { i32, i32, i32, i32, i8* }
-// ALL: [[UNNAMED_LOCK:@.+]] = common global [8 x i32] zeroinitializer
-// ALL: [[THE_NAME_LOCK:@.+]] = common global [8 x i32] zeroinitializer
-// ALL: [[THE_NAME_LOCK1:@.+]] = common global [8 x i32] zeroinitializer
+// ALL: [[UNNAMED_LOCK:@.+]] = common dso_local global [8 x i32] zeroinitializer
+// ALL: [[THE_NAME_LOCK:@.+]] = common dso_local global [8 x i32] zeroinitializer
+// ALL: [[THE_NAME_LOCK1:@.+]] = common dso_local global [8 x i32] zeroinitializer
// ALL: define {{.*}}void [[FOO:@.+]]()
Index: clang/test/OpenMP/critical_codegen.cpp
===================================================================
--- clang/test/OpenMP/critical_codegen.cpp
+++ clang/test/OpenMP/critical_codegen.cpp
@@ -16,9 +16,9 @@
#define HEADER
// ALL: [[IDENT_T_TY:%.+]] = type { i32, i32, i32, i32, i8* }
-// ALL: [[UNNAMED_LOCK:@.+]] = common global [8 x i32] zeroinitializer
-// ALL: [[THE_NAME_LOCK:@.+]] = common global [8 x i32] zeroinitializer
-// ALL: [[THE_NAME_LOCK1:@.+]] = common global [8 x i32] zeroinitializer
+// ALL: [[UNNAMED_LOCK:@.+]] = common dso_local global [8 x i32] zeroinitializer
+// ALL: [[THE_NAME_LOCK:@.+]] = common dso_local global [8 x i32] zeroinitializer
+// ALL: [[THE_NAME_LOCK1:@.+]] = common dso_local global [8 x i32] zeroinitializer
// ALL: define {{.*}}void [[FOO:@.+]]()
Index: clang/lib/CodeGen/CGOpenMPRuntime.cpp
===================================================================
--- clang/lib/CodeGen/CGOpenMPRuntime.cpp
+++ clang/lib/CodeGen/CGOpenMPRuntime.cpp
@@ -2189,7 +2189,12 @@
llvm::Value *CGOpenMPRuntime::getCriticalRegionLock(StringRef CriticalName) {
std::string Prefix = Twine("gomp_critical_user_", CriticalName).str();
std::string Name = getName({Prefix, "var"});
- return getOrCreateInternalVariable(KmpCriticalNameTy, Name);
+ llvm::GlobalVariable *GV = cast<llvm::GlobalVariable>(
+ getOrCreateInternalVariable(KmpCriticalNameTy, Name));
+ if (!GV->isDSOLocal())
+ GV->setDSOLocal(true);
+
+ return cast<llvm::Constant>(GV);
}
namespace {
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits