[PowerPC] return early if there is no preparing candidate in the loop; NFC

This is to improve compiling time.

Differential Revision: https://reviews.llvm.org/D112196

Reviewed By: jsji
This commit is contained in:
Chen Zheng 2021-10-22 05:39:51 +00:00
parent 85bf221f20
commit 13755436bb
1 changed files with 9 additions and 0 deletions
llvm/lib/Target/PowerPC

View File

@ -174,6 +174,7 @@ namespace {
LoopInfo *LI;
ScalarEvolution *SE;
bool PreserveLCSSA;
bool HasCandidateForPrepare;
/// Successful preparation number for Update/DS/DQ form in all inner most
/// loops. One successful preparation will put one common base out of loop,
@ -570,6 +571,9 @@ SmallVector<Bucket, 16> PPCLoopInstrFormPrep::collectCandidates(
if (!LARSCEV || LARSCEV->getLoop() != L)
continue;
// Mark that we have candidates for preparing.
HasCandidateForPrepare = true;
if (isValidCandidate(&J, PtrValue, PointerElementType))
addOneCandidate(&J, LSCEV, Buckets, MaxCandidateNum);
}
@ -1046,6 +1050,8 @@ bool PPCLoopInstrFormPrep::runOnLoop(Loop *L) {
return ST && ST->hasP9Vector() && (PointerElementType->isVectorTy());
};
HasCandidateForPrepare = false;
// Collect buckets of comparable addresses used by loads and stores for update
// form.
SmallVector<Bucket, 16> UpdateFormBuckets =
@ -1054,6 +1060,9 @@ bool PPCLoopInstrFormPrep::runOnLoop(Loop *L) {
// Prepare for update form.
if (!UpdateFormBuckets.empty())
MadeChange |= updateFormPrep(L, UpdateFormBuckets);
else if (!HasCandidateForPrepare)
// If no candidate for preparing, return early.
return MadeChange;
// Collect buckets of comparable addresses used by loads and stores for DS
// form.