From 4a3b80e1f95022c684cc18ee27f8905a8dd6e07d Mon Sep 17 00:00:00 2001 From: Justin Bogner Date: Wed, 25 Feb 2015 22:52:20 +0000 Subject: [PATCH] InstrProf: Make the __llvm_profile_runtime_user symbol hidden This symbol exists only to pull in the required pieces of the runtime, so nothing ever needs to refer to it. Making it hidden avoids the potential for issues with duplicate symbols when linking profiled libraries together. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230566 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/Instrumentation/InstrProfiling.cpp | 1 + test/Instrumentation/InstrProfiling/linkage.ll | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/Transforms/Instrumentation/InstrProfiling.cpp b/lib/Transforms/Instrumentation/InstrProfiling.cpp index 2a3d15421de..b5a491f3a40 100644 --- a/lib/Transforms/Instrumentation/InstrProfiling.cpp +++ b/lib/Transforms/Instrumentation/InstrProfiling.cpp @@ -288,6 +288,7 @@ void InstrProfiling::emitRuntimeHook() { User->addFnAttr(Attribute::NoInline); if (Options.NoRedZone) User->addFnAttr(Attribute::NoRedZone); + User->setVisibility(GlobalValue::HiddenVisibility); IRBuilder<> IRB(BasicBlock::Create(M->getContext(), "", User)); auto *Load = IRB.CreateLoad(Var); diff --git a/test/Instrumentation/InstrProfiling/linkage.ll b/test/Instrumentation/InstrProfiling/linkage.ll index 0e3dd05510a..0a92d5db446 100644 --- a/test/Instrumentation/InstrProfiling/linkage.ll +++ b/test/Instrumentation/InstrProfiling/linkage.ll @@ -40,7 +40,7 @@ declare void @llvm.instrprof.increment(i8*, i64, i32, i32) ; CHECK: @__llvm_profile_runtime = external global i32 -; CHECK: define linkonce_odr i32 @__llvm_profile_runtime_user() {{.*}} { +; CHECK: define linkonce_odr hidden i32 @__llvm_profile_runtime_user() {{.*}} { ; CHECK: %[[REG:.*]] = load i32* @__llvm_profile_runtime ; CHECK: ret i32 %[[REG]] ; CHECK: } -- 2.34.1