[llvm] r178582 - Allow MachineTraceMetrics to be used when the model has no resources.
Jakob Stoklund Olesen
stoklund at 2pi.dk
Tue Apr 2 15:27:45 PDT 2013
Author: stoklund
Date: Tue Apr 2 17:27:45 2013
New Revision: 178582
URL: http://llvm.org/viewvc/llvm-project?rev=178582&view=rev
Log:
Allow MachineTraceMetrics to be used when the model has no resources.
It it still possible to extract information from itineraries, for
example.
Modified:
llvm/trunk/lib/CodeGen/EarlyIfConversion.cpp
llvm/trunk/lib/CodeGen/MachineTraceMetrics.cpp
Modified: llvm/trunk/lib/CodeGen/EarlyIfConversion.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/EarlyIfConversion.cpp?rev=178582&r1=178581&r2=178582&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/EarlyIfConversion.cpp (original)
+++ llvm/trunk/lib/CodeGen/EarlyIfConversion.cpp Tue Apr 2 17:27:45 2013
@@ -677,10 +677,6 @@ bool EarlyIfConverter::shouldConvertIf()
if (Stress)
return true;
- // Without a scheduling model, we can't make decisions.
- if (!SchedModel->hasInstrSchedModel())
- return false;
-
if (!MinInstr)
MinInstr = Traces->getEnsemble(MachineTraceMetrics::TS_MinInstrCount);
Modified: llvm/trunk/lib/CodeGen/MachineTraceMetrics.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/MachineTraceMetrics.cpp?rev=178582&r1=178581&r2=178582&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/MachineTraceMetrics.cpp (original)
+++ llvm/trunk/lib/CodeGen/MachineTraceMetrics.cpp Tue Apr 2 17:27:45 2013
@@ -105,6 +105,8 @@ MachineTraceMetrics::getResources(const
FBI->HasCalls = true;
// Count processor resources used.
+ if (!SchedModel.hasInstrSchedModel())
+ continue;
const MCSchedClassDesc *SC = SchedModel.resolveSchedClass(MI);
if (!SC->isValid())
continue;
@@ -132,7 +134,9 @@ MachineTraceMetrics::getProcResourceCycl
assert(BlockInfo[MBBNum].hasResources() &&
"getResources() must be called before getProcResourceCycles()");
unsigned PRKinds = SchedModel.getNumProcResourceKinds();
- return ArrayRef<unsigned>(&ProcResourceCycles[MBBNum * PRKinds], PRKinds);
+ assert((MBBNum+1) * PRKinds <= ProcResourceCycles.size());
+ return ArrayRef<unsigned>(ProcResourceCycles.data() + MBBNum * PRKinds,
+ PRKinds);
}
@@ -251,7 +255,9 @@ ArrayRef<unsigned>
MachineTraceMetrics::Ensemble::
getProcResourceDepths(unsigned MBBNum) const {
unsigned PRKinds = MTM.SchedModel.getNumProcResourceKinds();
- return ArrayRef<unsigned>(&ProcResourceDepths[MBBNum * PRKinds], PRKinds);
+ assert((MBBNum+1) * PRKinds <= ProcResourceDepths.size());
+ return ArrayRef<unsigned>(ProcResourceDepths.data() + MBBNum * PRKinds,
+ PRKinds);
}
/// Get an array of processor resource heights for MBB. Indexed by processor
@@ -263,7 +269,9 @@ ArrayRef<unsigned>
MachineTraceMetrics::Ensemble::
getProcResourceHeights(unsigned MBBNum) const {
unsigned PRKinds = MTM.SchedModel.getNumProcResourceKinds();
- return ArrayRef<unsigned>(&ProcResourceHeights[MBBNum * PRKinds], PRKinds);
+ assert((MBBNum+1) * PRKinds <= ProcResourceHeights.size());
+ return ArrayRef<unsigned>(ProcResourceHeights.data() + MBBNum * PRKinds,
+ PRKinds);
}
//===----------------------------------------------------------------------===//
More information about the llvm-commits
mailing list