aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm/Analysis/InlineCost.h
diff options
context:
space:
mode:
authorKenneth Uildriks <kennethuil@gmail.com>2010-10-09 22:06:36 +0000
committerKenneth Uildriks <kennethuil@gmail.com>2010-10-09 22:06:36 +0000
commit74fa7327d690e6ceda6ce77e4e5b8ef75cb12538 (patch)
tree7ccda8d95ec34025c4695626a629f0a0d6ff2e25 /include/llvm/Analysis/InlineCost.h
parentea1fe2c0a79e7984da5d4fbd538a0bdb2cd1d149 (diff)
downloadexternal_llvm-74fa7327d690e6ceda6ce77e4e5b8ef75cb12538.zip
external_llvm-74fa7327d690e6ceda6ce77e4e5b8ef75cb12538.tar.gz
external_llvm-74fa7327d690e6ceda6ce77e4e5b8ef75cb12538.tar.bz2
Now using a variant of the existing inlining heuristics to decide whether to create a given specialization of a function in PartialSpecialization. If the total performance bonus across all callsites passing the same constant exceeds the specialization cost, we create the specialization.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116158 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Analysis/InlineCost.h')
-rw-r--r--include/llvm/Analysis/InlineCost.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/include/llvm/Analysis/InlineCost.h b/include/llvm/Analysis/InlineCost.h
index 9963ba4..ccec4c5 100644
--- a/include/llvm/Analysis/InlineCost.h
+++ b/include/llvm/Analysis/InlineCost.h
@@ -143,6 +143,18 @@ namespace llvm {
Function *Callee,
SmallPtrSet<const Function *, 16> &NeverInline);
+ /// getSpecializationBonus - The heuristic used to determine the per-call
+ /// performance boost for using a specialization of Callee with argument
+ /// SpecializedArgNos replaced by a constant.
+ int getSpecializationBonus(Function *Callee,
+ SmallVectorImpl<unsigned> &SpecializedArgNo);
+
+ /// getSpecializationCost - The heuristic used to determine the code-size
+ /// impact of creating a specialized version of Callee with argument
+ /// SpecializedArgNo replaced by a constant.
+ InlineCost getSpecializationCost(Function *Callee,
+ SmallVectorImpl<unsigned> &SpecializedArgNo);
+
/// getInlineFudgeFactor - Return a > 1.0 factor if the inliner should use a
/// higher threshold to determine if the function call should be inlined.
float getInlineFudgeFactor(CallSite CS);