1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 11:42:57 +01:00

Use the new CodeMetrics class to compute code size instead of

manually counting instructions.

llvm-svn: 84016
This commit is contained in:
Dan Gohman 2009-10-13 20:12:23 +00:00
parent c1e210fa10
commit c5a7668904

View File

@ -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