Move the inline cost analysis's primary cost query to TTI instead of the

old CodeMetrics system. TTI has the specific advantage of being
extensible and customizable by targets to reflect target-specific cost
metrics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173032 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chandler Carruth 2013-01-21 12:05:16 +00:00
parent 8d6c0f4dee
commit b5da8a4ae1

View File

@ -422,7 +422,7 @@ bool CallAnalyzer::visitPtrToInt(PtrToIntInst &I) {
if (lookupSROAArgAndCost(I.getOperand(0), SROAArg, CostIt)) if (lookupSROAArgAndCost(I.getOperand(0), SROAArg, CostIt))
SROAArgValues[&I] = SROAArg; SROAArgValues[&I] = SROAArg;
return isInstructionFree(&I, TD); return TargetTransformInfo::TCC_Free == TTI.getUserCost(&I);
} }
bool CallAnalyzer::visitIntToPtr(IntToPtrInst &I) { bool CallAnalyzer::visitIntToPtr(IntToPtrInst &I) {
@ -452,7 +452,7 @@ bool CallAnalyzer::visitIntToPtr(IntToPtrInst &I) {
if (lookupSROAArgAndCost(Op, SROAArg, CostIt)) if (lookupSROAArgAndCost(Op, SROAArg, CostIt))
SROAArgValues[&I] = SROAArg; SROAArgValues[&I] = SROAArg;
return isInstructionFree(&I, TD); return TargetTransformInfo::TCC_Free == TTI.getUserCost(&I);
} }
bool CallAnalyzer::visitCastInst(CastInst &I) { bool CallAnalyzer::visitCastInst(CastInst &I) {
@ -469,7 +469,7 @@ bool CallAnalyzer::visitCastInst(CastInst &I) {
// Disable SROA in the face of arbitrary casts we don't whitelist elsewhere. // Disable SROA in the face of arbitrary casts we don't whitelist elsewhere.
disableSROA(I.getOperand(0)); disableSROA(I.getOperand(0));
return isInstructionFree(&I, TD); return TargetTransformInfo::TCC_Free == TTI.getUserCost(&I);
} }
bool CallAnalyzer::visitUnaryInstruction(UnaryInstruction &I) { bool CallAnalyzer::visitUnaryInstruction(UnaryInstruction &I) {
@ -782,7 +782,7 @@ bool CallAnalyzer::visitCallSite(CallSite CS) {
bool CallAnalyzer::visitInstruction(Instruction &I) { bool CallAnalyzer::visitInstruction(Instruction &I) {
// Some instructions are free. All of the free intrinsics can also be // Some instructions are free. All of the free intrinsics can also be
// handled by SROA, etc. // handled by SROA, etc.
if (isInstructionFree(&I, TD)) if (TargetTransformInfo::TCC_Free == TTI.getUserCost(&I))
return true; return true;
// We found something we don't understand or can't handle. Mark any SROA-able // We found something we don't understand or can't handle. Mark any SROA-able