forked from OSchip/llvm-project
[InstrProfiling] Don't generate __llvm_profile_runtime_user
This is no longer needed, we can add __llvm_profile_runtime directly to llvm.compiler.used or llvm.used to achieve the same effect. Differential Revision: https://reviews.llvm.org/D98325
This commit is contained in:
parent
5af991d464
commit
c7712087cb
|
@ -149,12 +149,6 @@ inline StringRef getInstrProfRuntimeHookVarName() {
|
|||
return INSTR_PROF_QUOTE(INSTR_PROF_PROFILE_RUNTIME_VAR);
|
||||
}
|
||||
|
||||
/// Return the name of the compiler generated function that references the
|
||||
/// runtime hook variable. The function is a weak global.
|
||||
inline StringRef getInstrProfRuntimeHookVarUseFuncName() {
|
||||
return "__llvm_profile_runtime_user";
|
||||
}
|
||||
|
||||
inline StringRef getInstrProfCounterBiasVarName() {
|
||||
return "__llvm_profile_counter_bias";
|
||||
}
|
||||
|
|
|
@ -1073,23 +1073,8 @@ bool InstrProfiling::emitRuntimeHook() {
|
|||
new GlobalVariable(*M, Int32Ty, false, GlobalValue::ExternalLinkage,
|
||||
nullptr, getInstrProfRuntimeHookVarName());
|
||||
|
||||
// Make a function that uses it.
|
||||
auto *User = Function::Create(FunctionType::get(Int32Ty, false),
|
||||
GlobalValue::LinkOnceODRLinkage,
|
||||
getInstrProfRuntimeHookVarUseFuncName(), M);
|
||||
User->addFnAttr(Attribute::NoInline);
|
||||
if (Options.NoRedZone)
|
||||
User->addFnAttr(Attribute::NoRedZone);
|
||||
User->setVisibility(GlobalValue::HiddenVisibility);
|
||||
if (TT.supportsCOMDAT())
|
||||
User->setComdat(M->getOrInsertComdat(User->getName()));
|
||||
|
||||
IRBuilder<> IRB(BasicBlock::Create(M->getContext(), "", User));
|
||||
auto *Load = IRB.CreateLoad(Int32Ty, Var);
|
||||
IRB.CreateRet(Load);
|
||||
|
||||
// Mark the user variable as used so that it isn't stripped out.
|
||||
CompilerUsedVars.push_back(User);
|
||||
CompilerUsedVars.push_back(Var);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -81,11 +81,3 @@ define available_externally void @foo_extern() {
|
|||
}
|
||||
|
||||
declare void @llvm.instrprof.increment(i8*, i64, i32, i32)
|
||||
|
||||
; MACHO: define linkonce_odr hidden i32 @__llvm_profile_runtime_user() {{.*}} {
|
||||
; MACHO: %[[REG:.*]] = load i32, i32* @__llvm_profile_runtime
|
||||
; MACHO: ret i32 %[[REG]]
|
||||
; MACHO: }
|
||||
; COFF: define linkonce_odr hidden i32 @__llvm_profile_runtime_user() {{.*}} comdat {
|
||||
; ELF-NOT: define linkonce_odr hidden i32 @__llvm_profile_runtime_user() {{.*}} {
|
||||
; ELF-NOT: %[[REG:.*]] = load i32, i32* @__llvm_profile_runtime
|
||||
|
|
|
@ -54,11 +54,12 @@ define void @baz() {
|
|||
|
||||
declare void @llvm.instrprof.increment(i8*, i64, i32, i32)
|
||||
|
||||
; ELF: @llvm.compiler.used = appending global {{.*}} @__llvm_profile_runtime_user {{.*}} @__profd_foo {{.*}} @__profd_bar {{.*}} @__profd_baz
|
||||
; MACHO: @llvm.used = appending global {{.*}} @__llvm_profile_runtime_user {{.*}} @__profd_foo {{.*}} @__profd_bar {{.*}} @__profd_baz
|
||||
; WIN: @llvm.used = appending global {{.*}} @__llvm_profile_runtime_user {{.*}} @__profd_foo {{.*}} @__profd_bar {{.*}} @__profd_baz
|
||||
; ELF: @llvm.compiler.used = appending global {{.*}} @__llvm_profile_runtime {{.*}} @__profd_foo {{.*}} @__profd_bar {{.*}} @__profd_baz
|
||||
; MACHO: @llvm.used = appending global {{.*}} @__llvm_profile_runtime {{.*}} @__profd_foo {{.*}} @__profd_bar {{.*}} @__profd_baz
|
||||
; WIN: @llvm.used = appending global {{.*}} @__llvm_profile_runtime {{.*}} @__profd_foo {{.*}} @__profd_bar {{.*}} @__profd_baz
|
||||
|
||||
; ELF_GENERIC: define internal void @__llvm_profile_register_functions() unnamed_addr {
|
||||
; ELF_GENERIC-NEXT: call void @__llvm_profile_register_function(i8* bitcast (i32* @__llvm_profile_runtime to i8*))
|
||||
; ELF_GENERIC-NEXT: call void @__llvm_profile_register_function(i8* bitcast ({ i64, i64, i64*, i8*, i8*, i32, [2 x i16] }* @__profd_foo to i8*))
|
||||
; ELF_GENERIC-NEXT: call void @__llvm_profile_register_function(i8* bitcast ({ i64, i64, i64*, i8*, i8*, i32, [2 x i16] }* @__profd_bar to i8*))
|
||||
; ELF_GENERIC-NEXT: call void @__llvm_profile_register_function(i8* bitcast ({ i64, i64, i64*, i8*, i8*, i32, [2 x i16] }* @__profd_baz to i8*))
|
||||
|
|
Loading…
Reference in New Issue