[llvm-commits] [llvm] r43668 - /llvm/trunk/lib/Transforms/Scalar/TailDuplication.cpp

Chris Lattner sabre at nondot.org
Sat Nov 3 23:37:56 PDT 2007


Author: lattner
Date: Sun Nov  4 01:37:55 2007
New Revision: 43668

URL: http://llvm.org/viewvc/llvm-project?rev=43668&view=rev
Log:
Disable tail duplication of call instructions.  The cost
metric is way off for these in general, and this works around
buggy code like that in PR1764.  we'll see if there is a big
performance impact of this.  If so, I'll revert it tomorrow.

Modified:
    llvm/trunk/lib/Transforms/Scalar/TailDuplication.cpp

Modified: llvm/trunk/lib/Transforms/Scalar/TailDuplication.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/TailDuplication.cpp?rev=43668&r1=43667&r2=43668&view=diff

==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/TailDuplication.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/TailDuplication.cpp Sun Nov  4 01:37:55 2007
@@ -115,6 +115,11 @@
 
   for (unsigned Size = 0; I != Dest->end(); ++I) {
     if (Size == Threshold) return false;  // The block is too large.
+    
+    // Don't tail duplicate call instructions.  They are very large compared to
+    // other instructions.
+    if (isa<CallInst>(I) || isa<InvokeInst>(I)) return false;
+    
     // Only count instructions that are not debugger intrinsics.
     if (!isa<DbgInfoIntrinsic>(I)) ++Size;
   }





More information about the llvm-commits mailing list