forked from OSchip/llvm-project
[InstrProfiling] Use nobits as __llvm_prf_cnts section type in ELF
This can reduce the binary size because counters will no longer occupy space in the binary, instead they will be allocated by dynamic linker. Differential Revision: https://reviews.llvm.org/D97110
This commit is contained in:
parent
77056fe58e
commit
6b286d93f7
|
@ -440,6 +440,10 @@ static SectionKind getELFKindForNamedSection(StringRef Name, SectionKind K) {
|
|||
Name == ".llvmbc" || Name == ".llvmcmd")
|
||||
return SectionKind::getMetadata();
|
||||
|
||||
if (Name == getInstrProfSectionName(IPSK_cnts, Triple::ELF,
|
||||
/*AddSegmentInfo=*/false))
|
||||
return SectionKind::getBSS();
|
||||
|
||||
if (Name.empty() || Name[0] != '.') return K;
|
||||
|
||||
// Default implementation based on some magic section names.
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
;; Ensure that SHT_NOBITS section type is set for __llvm_prf_cnts in ELF.
|
||||
; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu | FileCheck %s
|
||||
|
||||
@__profc_foo = hidden global [1 x i64] zeroinitializer, section "__llvm_prf_cnts", align 8
|
||||
|
||||
define void @foo() {
|
||||
%pgocount = load i64, i64* getelementptr inbounds ([1 x i64], [1 x i64]* @__profc_foo, i64 0, i64 0), align 4
|
||||
%1 = add i64 %pgocount, 1
|
||||
store i64 %1, i64* getelementptr inbounds ([1 x i64], [1 x i64]* @__profc_foo, i64 0, i64 0), align 4
|
||||
ret void
|
||||
}
|
||||
|
||||
declare void @llvm.instrprof.increment(i8*, i64, i32, i32)
|
||||
|
||||
; CHECK: .section __llvm_prf_cnts,"aw",@nobits
|
Loading…
Reference in New Issue