summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
diff options
context:
space:
mode:
authorPiotr Padlewski <piotr.padlewski@gmail.com>2016-08-11 22:13:57 +0000
committerPiotr Padlewski <piotr.padlewski@gmail.com>2016-08-11 22:13:57 +0000
commit332b3b22109e9c0d84456888150c0a30f378f984 (patch)
tree777b39aba73791c52ead7d1c4a2e785441b0c86c /llvm/lib/Bitcode/Reader/BitcodeReader.cpp
parent6daefcf6262299a4233231c49b9048c1062dbc90 (diff)
downloadbcm5719-llvm-332b3b22109e9c0d84456888150c0a30f378f984.tar.gz
bcm5719-llvm-332b3b22109e9c0d84456888150c0a30f378f984.zip
Don't import variadic functions
Summary: This patch adds IsVariadicFunction bit to summary in order to not import variadic functions. Inliner doesn't inline variadic functions because it is hard to reason about it. This one small fix improves Importer by about 16% (going from 86% to 100% of imported functions that are inlined anywhere) on some spec benchmarks like 'int' and others. Reviewers: eraman, mehdi_amini, tejohnson Subscribers: mehdi_amini, llvm-commits Differential Revision: https://reviews.llvm.org/D23339 llvm-svn: 278432
Diffstat (limited to 'llvm/lib/Bitcode/Reader/BitcodeReader.cpp')
-rw-r--r--llvm/lib/Bitcode/Reader/BitcodeReader.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
index 73a30c61eca..2c3292527f5 100644
--- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
+++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
@@ -720,7 +720,7 @@ static GlobalValue::LinkageTypes getDecodedLinkage(unsigned Val) {
}
}
-// Decode the flags for GlobalValue in the summary
+/// Decode the flags for GlobalValue in the summary.
static GlobalValueSummary::GVFlags getDecodedGVSummaryFlags(uint64_t RawFlags,
uint64_t Version) {
// Summary were not emitted before LLVM 3.9, we don't need to upgrade Linkage
@@ -728,8 +728,9 @@ static GlobalValueSummary::GVFlags getDecodedGVSummaryFlags(uint64_t RawFlags,
// to getDecodedLinkage() will need to be taken into account here as above.
auto Linkage = GlobalValue::LinkageTypes(RawFlags & 0xF); // 4 bits
RawFlags = RawFlags >> 4;
- auto HasSection = RawFlags & 0x1; // bool
- return GlobalValueSummary::GVFlags(Linkage, HasSection);
+ bool HasSection = RawFlags & 0x1;
+ bool IsNotViableToInline = RawFlags & 0x2;
+ return GlobalValueSummary::GVFlags(Linkage, HasSection, IsNotViableToInline);
}
static GlobalValue::VisibilityTypes getDecodedVisibility(unsigned Val) {
OpenPOWER on IntegriCloud