mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-29 15:17:14 +00:00
[LDist][LVer] Explicitly pass the set of memchecks to LoopVersioning, NFC
Before the patch, the checks were generated internally in addRuntimeCheck. Now, we use the new overloaded version of addRuntimeCheck that takes the ready-made set of checks as a parameter. The checks are now generated by the client (LoopDistribution) with the new RuntimePointerChecking::generateChecks API. Also the new printChecks API is used to print out the checks for debugging. This is to continue the transition over to the new model whereby clients will get the full set of checks from LAA, filter it and then pass it to LoopVersioning and in turn to addRuntimeCheck. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243382 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -22,11 +22,12 @@
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
LoopVersioning::LoopVersioning(const LoopAccessInfo &LAI, Loop *L, LoopInfo *LI,
|
||||
DominatorTree *DT,
|
||||
const SmallVector<int, 8> *PtrToPartition)
|
||||
LoopVersioning::LoopVersioning(
|
||||
SmallVector<RuntimePointerChecking::PointerCheck, 4> Checks,
|
||||
const LoopAccessInfo &LAI, Loop *L, LoopInfo *LI, DominatorTree *DT,
|
||||
const SmallVector<int, 8> *PtrToPartition)
|
||||
: VersionedLoop(L), NonVersionedLoop(nullptr),
|
||||
PtrToPartition(PtrToPartition), LAI(LAI), LI(LI), DT(DT) {
|
||||
PtrToPartition(PtrToPartition), Checks(Checks), LAI(LAI), LI(LI), DT(DT) {
|
||||
assert(L->getExitBlock() && "No single exit block");
|
||||
assert(L->getLoopPreheader() && "No preheader");
|
||||
}
|
||||
@@ -41,7 +42,7 @@ void LoopVersioning::versionLoop(Pass *P) {
|
||||
// Add the memcheck in the original preheader (this is empty initially).
|
||||
BasicBlock *MemCheckBB = VersionedLoop->getLoopPreheader();
|
||||
std::tie(FirstCheckInst, MemRuntimeCheck) =
|
||||
LAI.addRuntimeCheck(MemCheckBB->getTerminator(), PtrToPartition);
|
||||
LAI.addRuntimeCheck(MemCheckBB->getTerminator(), Checks);
|
||||
assert(MemRuntimeCheck && "called even though needsAnyChecking = false");
|
||||
|
||||
// Rename the block to make the IR more readable.
|
||||
|
Reference in New Issue
Block a user