diff options
-rw-r--r-- | llvm/lib/MCA/InstrBuilder.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/llvm/lib/MCA/InstrBuilder.cpp b/llvm/lib/MCA/InstrBuilder.cpp index 3aaed0e3e94..829920366c9 100644 --- a/llvm/lib/MCA/InstrBuilder.cpp +++ b/llvm/lib/MCA/InstrBuilder.cpp @@ -65,6 +65,17 @@ static void initializeUsedResources(InstrDesc &ID, for (unsigned I = 0, E = SCDesc.NumWriteProcResEntries; I < E; ++I) { const MCWriteProcResEntry *PRE = STI.getWriteProcResBegin(&SCDesc) + I; const MCProcResourceDesc &PR = *SM.getProcResource(PRE->ProcResourceIdx); + if (!PRE->Cycles) { +#ifndef NDEBUG + WithColor::warning() + << "Ignoring invalid write of zero cycles on processor resource " + << PR.Name << "\n"; + WithColor::note() << "found in scheduling class " << SCDesc.Name + << " (write index #" << I << ")\n"; +#endif + continue; + } + uint64_t Mask = ProcResourceMasks[PRE->ProcResourceIdx]; if (PR.BufferSize < 0) { AllInOrderResources = false; @@ -189,8 +200,9 @@ static void initializeUsedResources(InstrDesc &ID, << "cy=" << R.second.size() << '\n'; for (const uint64_t R : ID.Buffers) dbgs() << "\t\tBuffer Mask=" << format_hex(R, 16) << '\n'; - dbgs() << "\t\t Used Units=" << format_hex(ID.UsedProcResUnits, 16) << '\n'; - dbgs() << "\t\tUsed Groups=" << format_hex(ID.UsedProcResGroups, 16) << '\n'; + dbgs() << "\t\t Used Units=" << format_hex(ID.UsedProcResUnits, 16) << '\n'; + dbgs() << "\t\tUsed Groups=" << format_hex(ID.UsedProcResGroups, 16) + << '\n'; }); } |