diff options
author | Ellis Hoag <ellis.sparky.hoag@gmail.com> | 2022-07-29 16:23:46 -0700 |
---|---|---|
committer | Ellis Hoag <ellis.sparky.hoag@gmail.com> | 2022-08-04 08:45:27 -0700 |
commit | 12e78ff88105f2dc6cb1449d6fcd5d8f69e0512f (patch) | |
tree | 652e87fc7305b7d2d10eb24ca56bffe00af4fb11 /llvm/lib/Bitcode/Writer/BitcodeWriter.cpp | |
parent | ec7f4a7c5d9794c9fdf4f894873e7edbbfddf3e2 (diff) | |
download | llvm-12e78ff88105f2dc6cb1449d6fcd5d8f69e0512f.zip llvm-12e78ff88105f2dc6cb1449d6fcd5d8f69e0512f.tar.gz llvm-12e78ff88105f2dc6cb1449d6fcd5d8f69e0512f.tar.bz2 |
[InstrProf] Add the skipprofile attribute
As discussed in [0], this diff adds the `skipprofile` attribute to
prevent the function from being profiled while allowing profiled
functions to be inlined into it. The `noprofile` attribute remains
unchanged.
The `noprofile` attribute is used for functions where it is
dangerous to add instrumentation to while the `skipprofile` attribute is
used to reduce code size or performance overhead.
[0] https://discourse.llvm.org/t/why-does-the-noprofile-attribute-restrict-inlining/64108
Reviewed By: phosek
Differential Revision: https://reviews.llvm.org/D130807
Diffstat (limited to 'llvm/lib/Bitcode/Writer/BitcodeWriter.cpp')
-rw-r--r-- | llvm/lib/Bitcode/Writer/BitcodeWriter.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp index eda4ac7..f66bc2d1 100644 --- a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp +++ b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp @@ -698,6 +698,8 @@ static uint64_t getAttrKindEncoding(Attribute::AttrKind Kind) { return bitc::ATTR_KIND_NOCF_CHECK; case Attribute::NoProfile: return bitc::ATTR_KIND_NO_PROFILE; + case Attribute::SkipProfile: + return bitc::ATTR_KIND_SKIP_PROFILE; case Attribute::NoUnwind: return bitc::ATTR_KIND_NO_UNWIND; case Attribute::NoSanitizeBounds: |