summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis
diff options
context:
space:
mode:
authorNick Lewycky <nicholas@mxc.ca>2011-12-21 20:26:03 +0000
committerNick Lewycky <nicholas@mxc.ca>2011-12-21 20:26:03 +0000
commitc186d07bbebd381cd42a9b7829033cdda0dc6d22 (patch)
tree83a5c29ac41b69b7c2b01c726de586211e6ad750 /llvm/lib/Analysis
parent281e2747e00e22db1b11f8ba96af6116fa9c5782 (diff)
downloadbcm5719-llvm-c186d07bbebd381cd42a9b7829033cdda0dc6d22.tar.gz
bcm5719-llvm-c186d07bbebd381cd42a9b7829033cdda0dc6d22.zip
Continue counting intrinsics as instructions (except when they aren't, such as
debug info) and for being vector operations. Fixes regression from r147037. llvm-svn: 147093
Diffstat (limited to 'llvm/lib/Analysis')
-rw-r--r--llvm/lib/Analysis/InlineCost.cpp20
1 files changed, 17 insertions, 3 deletions
diff --git a/llvm/lib/Analysis/InlineCost.cpp b/llvm/lib/Analysis/InlineCost.cpp
index 225c3f4cbfc..226b4732a49 100644
--- a/llvm/lib/Analysis/InlineCost.cpp
+++ b/llvm/lib/Analysis/InlineCost.cpp
@@ -63,8 +63,22 @@ void CodeMetrics::analyzeBasicBlock(const BasicBlock *BB,
// Special handling for calls.
if (isa<CallInst>(II) || isa<InvokeInst>(II)) {
- if (isa<IntrinsicInst>(II))
- continue; // Intrinsics have no argument setup and can't be inlined.
+ if (const IntrinsicInst *IntrinsicI = dyn_cast<IntrinsicInst>(II)) {
+ switch (IntrinsicI->getIntrinsicID()) {
+ default: break;
+ case Intrinsic::dbg_declare:
+ case Intrinsic::dbg_value:
+ case Intrinsic::invariant_start:
+ case Intrinsic::invariant_end:
+ case Intrinsic::lifetime_start:
+ case Intrinsic::lifetime_end:
+ case Intrinsic::objectsize:
+ case Intrinsic::ptr_annotation:
+ case Intrinsic::var_annotation:
+ // These intrinsics don't count as size.
+ continue;
+ }
+ }
ImmutableCallSite CS(cast<Instruction>(II));
@@ -83,7 +97,7 @@ void CodeMetrics::analyzeBasicBlock(const BasicBlock *BB,
isRecursive = true;
}
- if (!callIsSmall(CS.getCalledFunction())) {
+ if (!isa<IntrinsicInst>(II) && !callIsSmall(CS.getCalledFunction())) {
// Each argument to a call takes on average one instruction to set up.
NumInsts += CS.arg_size();
OpenPOWER on IntegriCloud