diff options
author | Nick Lewycky <nicholas@mxc.ca> | 2011-12-21 20:26:03 +0000 |
---|---|---|
committer | Nick Lewycky <nicholas@mxc.ca> | 2011-12-21 20:26:03 +0000 |
commit | c186d07bbebd381cd42a9b7829033cdda0dc6d22 (patch) | |
tree | 83a5c29ac41b69b7c2b01c726de586211e6ad750 /llvm/lib/Analysis | |
parent | 281e2747e00e22db1b11f8ba96af6116fa9c5782 (diff) | |
download | bcm5719-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.cpp | 20 |
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(); |