From 0647ebf1dc1045cf9614815581d2fe016ea5d229 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 4 Nov 2007 06:37:55 +0000 Subject: [PATCH] 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43668 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/Scalar/TailDuplication.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/Transforms/Scalar/TailDuplication.cpp b/lib/Transforms/Scalar/TailDuplication.cpp index 22d8157fc08..1473caa2ea8 100644 --- a/lib/Transforms/Scalar/TailDuplication.cpp +++ b/lib/Transforms/Scalar/TailDuplication.cpp @@ -115,6 +115,11 @@ bool TailDup::shouldEliminateUnconditionalBranch(TerminatorInst *TI) { 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(I) || isa(I)) return false; + // Only count instructions that are not debugger intrinsics. if (!isa(I)) ++Size; }