[REFACTOR] Simplify the SCoP detection interface a bit

llvm-svn: 229879
This commit is contained in:
Johannes Doerfert 2015-02-19 18:11:50 +00:00
parent 2a056d8f86
commit 3f1c285294
2 changed files with 11 additions and 24 deletions

View File

@ -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.

View File

@ -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;