aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2009-10-13 20:12:23 +0000
committerDan Gohman <gohman@apple.com>2009-10-13 20:12:23 +0000
commit597c5e2d32647382c4da0ad2005085a7760e65bb (patch)
treea0821b44a928135a6300469f641c1e55880b892a /lib
parent497f61940a2b682bff79a0e2ada0caa65508f80c (diff)
downloadexternal_llvm-597c5e2d32647382c4da0ad2005085a7760e65bb.zip
external_llvm-597c5e2d32647382c4da0ad2005085a7760e65bb.tar.gz
external_llvm-597c5e2d32647382c4da0ad2005085a7760e65bb.tar.bz2
Use the new CodeMetrics class to compute code size instead of
manually counting instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84016 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/Transforms/Scalar/LoopUnswitch.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/lib/Transforms/Scalar/LoopUnswitch.cpp b/lib/Transforms/Scalar/LoopUnswitch.cpp
index f116d53..624f240 100644
--- a/lib/Transforms/Scalar/LoopUnswitch.cpp
+++ b/lib/Transforms/Scalar/LoopUnswitch.cpp
@@ -34,6 +34,7 @@
#include "llvm/Instructions.h"
#include "llvm/LLVMContext.h"
#include "llvm/Analysis/ConstantFolding.h"
+#include "llvm/Analysis/InlineCost.h"
#include "llvm/Analysis/LoopInfo.h"
#include "llvm/Analysis/LoopPass.h"
#include "llvm/Analysis/Dominators.h"
@@ -408,15 +409,14 @@ unsigned LoopUnswitch::getLoopUnswitchCost(Value *LIC) {
if (IsTrivialUnswitchCondition(LIC))
return 0;
- // FIXME: This is really overly conservative and brain dead.
- unsigned Cost = 0;
+ // FIXME: This is overly conservative because it does not take into
+ // consideration code simplification opportunities.
+ CodeMetrics Metrics;
for (Loop::block_iterator I = currentLoop->block_begin(),
E = currentLoop->block_end();
I != E; ++I)
- // Count instructions.
- Cost += (*I)->size();
-
- return Cost;
+ Metrics.analyzeBasicBlock(*I);
+ return Metrics.NumInsts;
}
/// UnswitchIfProfitable - We have found that we can unswitch currentLoop when