[llvm-commits] [llvm] r147093 - /llvm/trunk/lib/Analysis/InlineCost.cpp

Nick Lewycky nicholas at mxc.ca
Wed Dec 21 12:26:04 PST 2011


Author: nicholas
Date: Wed Dec 21 14:26:03 2011
New Revision: 147093

URL: http://llvm.org/viewvc/llvm-project?rev=147093&view=rev
Log:
Continue counting intrinsics as instructions (except when they aren't, such as
debug info) and for being vector operations. Fixes regression from r147037.

Modified:
    llvm/trunk/lib/Analysis/InlineCost.cpp

Modified: llvm/trunk/lib/Analysis/InlineCost.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/InlineCost.cpp?rev=147093&r1=147092&r2=147093&view=diff
==============================================================================
--- llvm/trunk/lib/Analysis/InlineCost.cpp (original)
+++ llvm/trunk/lib/Analysis/InlineCost.cpp Wed Dec 21 14:26:03 2011
@@ -63,8 +63,22 @@
 
     // 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 @@
           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();
 





More information about the llvm-commits mailing list