forked from OSchip/llvm-project
[REFACTOR] Simplify the SCoP detection interface a bit
llvm-svn: 229879
This commit is contained in:
parent
2a056d8f86
commit
3f1c285294
|
@ -208,13 +208,6 @@ private:
|
|||
/// @return True if R is a Scop, false otherwise.
|
||||
bool isValidRegion(DetectionContext &Context) const;
|
||||
|
||||
/// @brief Check if a region is a Scop.
|
||||
///
|
||||
/// @param Context The context of scop detection.
|
||||
///
|
||||
/// @return True if R is a Scop, false otherwise.
|
||||
bool isValidRegion(Region &R) const;
|
||||
|
||||
/// @brief Check if a call instruction can be part of a Scop.
|
||||
///
|
||||
/// @param CI The call instruction to check.
|
||||
|
|
|
@ -251,8 +251,10 @@ bool ScopDetection::isMaxRegionInScop(const Region &R, bool Verify) const {
|
|||
if (!ValidRegions.count(&R))
|
||||
return false;
|
||||
|
||||
if (Verify)
|
||||
return isValidRegion(const_cast<Region &>(R));
|
||||
if (Verify) {
|
||||
DetectionContext Context(const_cast<Region &>(R), *AA, false /*verifying*/);
|
||||
return isValidRegion(Context);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -731,10 +733,14 @@ void ScopDetection::findScops(Region &R) {
|
|||
if (!DetectRegionsWithoutLoops && regionWithoutLoops(R, LI))
|
||||
return;
|
||||
|
||||
bool IsValidRegion = isValidRegion(R);
|
||||
bool HasErrors = RejectLogs.count(&R) > 0;
|
||||
DetectionContext Context(R, *AA, false /*verifying*/);
|
||||
bool RegionIsValid = isValidRegion(Context);
|
||||
bool HasErrors = !RegionIsValid || Context.Log.size() > 0;
|
||||
|
||||
if (IsValidRegion && !HasErrors) {
|
||||
if (PollyTrackFailures && HasErrors)
|
||||
RejectLogs.insert(std::make_pair(&R, Context.Log));
|
||||
|
||||
if (!HasErrors) {
|
||||
++ValidRegion;
|
||||
ValidRegions.insert(&R);
|
||||
return;
|
||||
|
@ -817,18 +823,6 @@ bool ScopDetection::isValidExit(DetectionContext &Context) const {
|
|||
return true;
|
||||
}
|
||||
|
||||
bool ScopDetection::isValidRegion(Region &R) const {
|
||||
DetectionContext Context(R, *AA, false /*verifying*/);
|
||||
|
||||
bool RegionIsValid = isValidRegion(Context);
|
||||
bool HasErrors = !RegionIsValid || Context.Log.size() > 0;
|
||||
|
||||
if (PollyTrackFailures && HasErrors)
|
||||
RejectLogs.insert(std::make_pair(&R, Context.Log));
|
||||
|
||||
return RegionIsValid;
|
||||
}
|
||||
|
||||
bool ScopDetection::isValidRegion(DetectionContext &Context) const {
|
||||
Region &R = Context.CurRegion;
|
||||
|
||||
|
|
Loading…
Reference in New Issue