]> granicus.if.org Git - clang/commitdiff
Make internal/private GVs implicitly dso_local.
authorRafael Espindola <rafael.espindola@gmail.com>
Thu, 11 Jan 2018 22:15:12 +0000 (22:15 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Thu, 11 Jan 2018 22:15:12 +0000 (22:15 +0000)
While updating clang tests for having clang set dso_local I noticed
that:

- There are *a lot* of tests to update.
- Many of the updates are redundant.

They are redundant because a GV is "obviously dso_local". This patch
starts formalizing that a bit by requiring that internal and private
GVs be dso_local too. Since they all are, we don't have to print
dso_local to the textual representation, making it a bit more compact
and easier to read.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@322318 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGOpenMPRuntime.cpp
test/CodeGenCXX/microsoft-abi-static-initializers.cpp
test/OpenMP/target_codegen_registration.cpp
test/OpenMP/target_parallel_codegen_registration.cpp
test/OpenMP/target_parallel_for_codegen_registration.cpp
test/OpenMP/target_parallel_for_simd_codegen_registration.cpp
test/OpenMP/target_simd_codegen_registration.cpp
test/OpenMP/target_teams_codegen_registration.cpp
test/OpenMP/target_teams_distribute_codegen_registration.cpp
test/OpenMP/target_teams_distribute_simd_codegen_registration.cpp

index d2ccb33bc2acce10e8e8ad93f35c537019051b5e..9fa173b2e09227de068c8f50df8fd18767895f4c 100644 (file)
@@ -5912,6 +5912,7 @@ void CGOpenMPRuntime::emitTargetOutlinedFunctionHelper(
   if (CGM.getLangOpts().OpenMPIsDevice) {
     OutlinedFnID = llvm::ConstantExpr::getBitCast(OutlinedFn, CGM.Int8PtrTy);
     OutlinedFn->setLinkage(llvm::GlobalValue::ExternalLinkage);
+    OutlinedFn->setDSOLocal(false);
   } else
     OutlinedFnID = new llvm::GlobalVariable(
         CGM.getModule(), CGM.Int8Ty, /*isConstant=*/true,
index 0b84f07e1154c5a1b446d85fe3beb7eaf378c027..f834c5593d1f3fe5764de3b539a4a812aba8fd9e 100644 (file)
@@ -28,11 +28,11 @@ S s;
 // See @llvm.global_ctors above.
 __declspec(selectany) S selectany1;
 __declspec(selectany) S selectany2;
-// CHECK: define linkonce_odr void @"\01??__Eselectany1@@YAXXZ"() {{.*}} comdat
+// CHECK: define linkonce_odr dso_local void @"\01??__Eselectany1@@YAXXZ"() {{.*}} comdat
 // CHECK-NOT: @"\01??_Bselectany1
 // CHECK: call x86_thiscallcc %struct.S* @"\01??0S@@QAE@XZ"
 // CHECK: ret void
-// CHECK: define linkonce_odr void @"\01??__Eselectany2@@YAXXZ"() {{.*}} comdat
+// CHECK: define linkonce_odr dso_local void @"\01??__Eselectany2@@YAXXZ"() {{.*}} comdat
 // CHECK-NOT: @"\01??_Bselectany2
 // CHECK: call x86_thiscallcc %struct.S* @"\01??0S@@QAE@XZ"
 // CHECK: ret void
@@ -231,7 +231,7 @@ void force_usage() {
   DynamicDLLImportInitVSMangling::switch_test3();
 }
 
-// CHECK: define linkonce_odr void @"\01??__Efoo@?$B@H@@2VA@@A@YAXXZ"() {{.*}} comdat
+// CHECK: define linkonce_odr dso_local void @"\01??__Efoo@?$B@H@@2VA@@A@YAXXZ"() {{.*}} comdat
 // CHECK-NOT: and
 // CHECK-NOT: ?_Bfoo@
 // CHECK: call x86_thiscallcc %class.A* @"\01??0A@@QAE@XZ"
index c576e9693e647904c15a2cd52925be52299776be..98104aa4fc3af256492f69b2d23e9d1206e5b88d 100644 (file)
@@ -393,7 +393,7 @@ struct ST {
 //CHECK:     ret void
 //CHECK:     declare i32 @__tgt_unregister_lib([[DSCTY]]*)
 
-//CHECK:     define linkonce hidden void @[[REGFN]](i8*)
+//CHECK:     define linkonce dso_local hidden void @[[REGFN]](i8*)
 //CHECK-SAME: comdat {
 //CHECK:     call i32 @__tgt_register_lib([[DSCTY]]* [[DESC]])
 //CHECK:     call i32 @__cxa_atexit(void (i8*)* @[[UNREGFN]], i8* bitcast ([[DSCTY]]* [[DESC]] to i8*),
index 5b2af0f15c7f2f2930a3c3bfa8f603c5a15815e8..649a4b50fc7a959421ca14fd218abff1e37b0f31 100644 (file)
@@ -393,7 +393,7 @@ struct ST {
 //CHECK:     ret void
 //CHECK:     declare i32 @__tgt_unregister_lib([[DSCTY]]*)
 
-//CHECK:     define linkonce hidden void @[[REGFN]](i8*)
+//CHECK:     define linkonce dso_local hidden void @[[REGFN]](i8*)
 //CHECK-SAME: comdat {
 //CHECK:     call i32 @__tgt_register_lib([[DSCTY]]* [[DESC]])
 //CHECK:     call i32 @__cxa_atexit(void (i8*)* @[[UNREGFN]], i8* bitcast ([[DSCTY]]* [[DESC]] to i8*),
index 6862a61be61c9504d1b2fe7c02bda9a198866c4f..d96fdf07f1acbb64a122dfbf90b3c74ad7935c19 100644 (file)
@@ -402,7 +402,7 @@ struct ST {
 //CHECK:     ret void
 //CHECK:     declare i32 @__tgt_unregister_lib([[DSCTY]]*)
 
-//CHECK:     define linkonce hidden void @[[REGFN]](i8*)
+//CHECK:     define linkonce dso_local hidden void @[[REGFN]](i8*)
 //CHECK-SAME: comdat {
 //CHECK:     call i32 @__tgt_register_lib([[DSCTY]]* [[DESC]])
 //CHECK:     call i32 @__cxa_atexit(void (i8*)* @[[UNREGFN]], i8* bitcast ([[DSCTY]]* [[DESC]] to i8*),
index 5a29222b952b882aee518083219fa0479e5bc371..8db937fc8bff6f8668cc43a2e0220e11110dd324 100644 (file)
@@ -402,7 +402,7 @@ struct ST {
 //CHECK:     ret void
 //CHECK:     declare i32 @__tgt_unregister_lib([[DSCTY]]*)
 
-//CHECK:     define linkonce hidden void @[[REGFN]](i8*)
+//CHECK:     define linkonce dso_local hidden void @[[REGFN]](i8*)
 //CHECK-SAME: comdat {
 //CHECK:     call i32 @__tgt_register_lib([[DSCTY]]* [[DESC]])
 //CHECK:     call i32 @__cxa_atexit(void (i8*)* @[[UNREGFN]], i8* bitcast ([[DSCTY]]* [[DESC]] to i8*),
index 47185ce5b5bd367048547f64d588077178d56382..627a9a027b3de3acec1dfd9bfb6a7c22badc1524 100644 (file)
@@ -402,7 +402,7 @@ struct ST {
 //CHECK:     ret void
 //CHECK:     declare i32 @__tgt_unregister_lib([[DSCTY]]*)
 
-//CHECK:     define linkonce hidden void @[[REGFN]](i8*)
+//CHECK:     define linkonce dso_local hidden void @[[REGFN]](i8*)
 //CHECK-SAME: comdat {
 //CHECK:     call i32 @__tgt_register_lib([[DSCTY]]* [[DESC]])
 //CHECK:     call i32 @__cxa_atexit(void (i8*)* @[[UNREGFN]], i8* bitcast ([[DSCTY]]* [[DESC]] to i8*),
index 97ebbc6f0137ba09cf39d731df34283f4146cba3..c185074177af8e0054ea0d1de20ef2440d976209 100644 (file)
@@ -393,7 +393,7 @@ struct ST {
 //CHECK:     ret void
 //CHECK:     declare i32 @__tgt_unregister_lib([[DSCTY]]*)
 
-//CHECK:     define linkonce hidden void @[[REGFN]](i8*)
+//CHECK:     define linkonce dso_local hidden void @[[REGFN]](i8*)
 //CHECK-SAME: comdat {
 //CHECK:     call i32 @__tgt_register_lib([[DSCTY]]* [[DESC]])
 //CHECK:     call i32 @__cxa_atexit(void (i8*)* @[[UNREGFN]], i8* bitcast ([[DSCTY]]* [[DESC]] to i8*),
index 2b8208cad320add5e1e137df31f8f3a89155cd37..31b18a9ab27d0b1a9e5663f95e7a455839ce0097 100644 (file)
@@ -402,7 +402,7 @@ struct ST {
 //CHECK:     ret void
 //CHECK:     declare i32 @__tgt_unregister_lib([[DSCTY]]*)
 
-//CHECK:     define linkonce hidden void @[[REGFN]](i8*)
+//CHECK:     define linkonce dso_local hidden void @[[REGFN]](i8*)
 //CHECK-SAME: comdat {
 //CHECK:     call i32 @__tgt_register_lib([[DSCTY]]* [[DESC]])
 //CHECK:     call i32 @__cxa_atexit(void (i8*)* @[[UNREGFN]], i8* bitcast ([[DSCTY]]* [[DESC]] to i8*),
index 9e455b66608326e69966ce09231eb5317bfa6d1b..0377ea26b83de69007b8e8b9c711883e2653578b 100644 (file)
@@ -402,7 +402,7 @@ struct ST {
 //CHECK:     ret void
 //CHECK:     declare i32 @__tgt_unregister_lib([[DSCTY]]*)
 
-//CHECK:     define linkonce hidden void @[[REGFN]](i8*)
+//CHECK:     define linkonce dso_local hidden void @[[REGFN]](i8*)
 //CHECK-SAME: comdat {
 //CHECK:     call i32 @__tgt_register_lib([[DSCTY]]* [[DESC]])
 //CHECK:     call i32 @__cxa_atexit(void (i8*)* @[[UNREGFN]], i8* bitcast ([[DSCTY]]* [[DESC]] to i8*),