From c3901952460ff70d65abbc7a9f5df174c95eaae4 Mon Sep 17 00:00:00 2001 From: Petr Hosek Date: Mon, 27 Jan 2020 23:28:03 -0800 Subject: [PATCH] [Instrumentation] Set hidden visibility for the bias variable We have to avoid using a GOT relocation to access the bias variable, setting the hidden visibility achieves that. Differential Revision: https://reviews.llvm.org/D73529 --- lib/Transforms/Instrumentation/InstrProfiling.cpp | 4 +++- .../InstrProfiling/runtime-counter-relocation.ll | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/Transforms/Instrumentation/InstrProfiling.cpp b/lib/Transforms/Instrumentation/InstrProfiling.cpp index 290e155ad9c..292ab89433c 100644 --- a/lib/Transforms/Instrumentation/InstrProfiling.cpp +++ b/lib/Transforms/Instrumentation/InstrProfiling.cpp @@ -686,10 +686,12 @@ void InstrProfiling::lowerIncrement(InstrProfIncrementInst *Inc) { IRBuilder<> Builder(&I); Type *Int64Ty = Type::getInt64Ty(M->getContext()); GlobalVariable *Bias = M->getGlobalVariable(getInstrProfCounterBiasVarName()); - if (!Bias) + if (!Bias) { Bias = new GlobalVariable(*M, Int64Ty, false, GlobalValue::LinkOnceODRLinkage, Constant::getNullValue(Int64Ty), getInstrProfCounterBiasVarName()); + Bias->setVisibility(GlobalVariable::HiddenVisibility); + } LI = Builder.CreateLoad(Int64Ty, Bias); } auto *Add = Builder.CreateAdd(Builder.CreatePtrToInt(Addr, Int64Ty), LI); diff --git a/test/Instrumentation/InstrProfiling/runtime-counter-relocation.ll b/test/Instrumentation/InstrProfiling/runtime-counter-relocation.ll index afe5ff68724..52065921bd7 100644 --- a/test/Instrumentation/InstrProfiling/runtime-counter-relocation.ll +++ b/test/Instrumentation/InstrProfiling/runtime-counter-relocation.ll @@ -4,7 +4,7 @@ target triple = "x86_64-unknown-linux-gnu" @__profn_foo = hidden constant [3 x i8] c"foo" -; RELOC: @__llvm_profile_counter_bias = linkonce_odr global i64 0 +; RELOC: @__llvm_profile_counter_bias = linkonce_odr hidden global i64 0 ; CHECK-LABEL: define void @foo ; CHECK-NEXT: %pgocount = load i64, i64* getelementptr inbounds ([1 x i64], [1 x i64]* @__profc_foo, i64 0, i64 0)