summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/IPO/PartialInlining.cpp
diff options
context:
space:
mode:
authorXinliang David Li <davidxl@google.com>2017-05-02 18:43:21 +0000
committerXinliang David Li <davidxl@google.com>2017-05-02 18:43:21 +0000
commitab8722f80a23169c2e45dfa129216979a6fb54f8 (patch)
tree8ff16506c730b22bd92a94bb6cb08fd6802cafca /llvm/lib/Transforms/IPO/PartialInlining.cpp
parent5c80618fb78e5571e859e42b7ff2f062f5fc6f81 (diff)
downloadbcm5719-llvm-ab8722f80a23169c2e45dfa129216979a6fb54f8.tar.gz
bcm5719-llvm-ab8722f80a23169c2e45dfa129216979a6fb54f8.zip
[PartialInlining] Add more early filtering
This is a follow up to the previous inline cost patch for quicker filtering. llvm-svn: 301959
Diffstat (limited to 'llvm/lib/Transforms/IPO/PartialInlining.cpp')
-rw-r--r--llvm/lib/Transforms/IPO/PartialInlining.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/IPO/PartialInlining.cpp b/llvm/lib/Transforms/IPO/PartialInlining.cpp
index 1bb9d654ec1..2db47b3b562 100644
--- a/llvm/lib/Transforms/IPO/PartialInlining.cpp
+++ b/llvm/lib/Transforms/IPO/PartialInlining.cpp
@@ -337,6 +337,16 @@ Function *PartialInlinerImpl::unswitchFunction(Function *F) {
if (F->hasAddressTaken())
return nullptr;
+ // Let inliner handle it
+ if (F->hasFnAttribute(Attribute::AlwaysInline))
+ return nullptr;
+
+ if (F->hasFnAttribute(Attribute::NoInline))
+ return nullptr;
+
+ if (PSI->isFunctionEntryCold(F))
+ return nullptr;
+
std::unique_ptr<FunctionOutliningInfo> OutliningInfo =
computeOutliningInfo(F);
OpenPOWER on IntegriCloud