[PATCH 01/11] Move getDebugLocation to ScopDetectionDiagnostic
Andreas Simbuerger
simbuerg at googlemail.com
Sun Jun 8 17:42:23 PDT 2014
---
include/polly/ScopDetection.h | 9 ---------
include/polly/ScopDetectionDiagnostic.h | 10 ++++++++++
lib/Analysis/ScopDetection.cpp | 23 -----------------------
lib/Analysis/ScopDetectionDiagnostic.cpp | 27 +++++++++++++++++++++++++++
4 files changed, 37 insertions(+), 32 deletions(-)
diff --git a/include/polly/ScopDetection.h b/include/polly/ScopDetection.h
index d72c5aa..5bab520 100644
--- a/include/polly/ScopDetection.h
+++ b/include/polly/ScopDetection.h
@@ -258,15 +258,6 @@ class ScopDetection : public FunctionPass {
/// @return True if the function is not an OpenMP subfunction.
bool isValidFunction(llvm::Function &F);
- /// @brief Get the location of a region from the debug info.
- ///
- /// @param R The region to get debug info for.
- /// @param LineBegin The first line in the region.
- /// @param LineEnd The last line in the region.
- /// @param FileName The filename where the region was defined.
- void getDebugLocation(const Region *R, unsigned &LineBegin, unsigned &LineEnd,
- std::string &FileName);
-
/// @brief Print the locations of all detected scops.
void printLocations(llvm::Function &F);
diff --git a/include/polly/ScopDetectionDiagnostic.h b/include/polly/ScopDetectionDiagnostic.h
index b510e78..1006770 100644
--- a/include/polly/ScopDetectionDiagnostic.h
+++ b/include/polly/ScopDetectionDiagnostic.h
@@ -42,6 +42,16 @@ class Region;
}
namespace polly {
+
+/// @brief Get the location of a region from the debug info.
+///
+/// @param R The region to get debug info for.
+/// @param LineBegin The first line in the region.
+/// @param LineEnd The last line in the region.
+/// @param FileName The filename where the region was defined.
+void getDebugLocation(const Region *R, unsigned &LineBegin, unsigned &LineEnd,
+ std::string &FileName);
+
//===----------------------------------------------------------------------===//
/// @brief Base class of all reject reasons found during Scop detection.
///
diff --git a/lib/Analysis/ScopDetection.cpp b/lib/Analysis/ScopDetection.cpp
index 9c25308..8a9226e 100644
--- a/lib/Analysis/ScopDetection.cpp
+++ b/lib/Analysis/ScopDetection.cpp
@@ -762,29 +762,6 @@ bool ScopDetection::isValidFunction(llvm::Function &F) {
return !InvalidFunctions.count(&F);
}
-void ScopDetection::getDebugLocation(const Region *R, unsigned &LineBegin,
- unsigned &LineEnd, std::string &FileName) {
- LineBegin = -1;
- LineEnd = 0;
-
- for (const BasicBlock *BB : R->blocks())
- for (const Instruction &Inst : *BB) {
- DebugLoc DL = Inst.getDebugLoc();
- if (DL.isUnknown())
- continue;
-
- DIScope Scope(DL.getScope(Inst.getContext()));
-
- if (FileName.empty())
- FileName = Scope.getFilename();
-
- unsigned NewLine = DL.getLine();
-
- LineBegin = std::min(LineBegin, NewLine);
- LineEnd = std::max(LineEnd, NewLine);
- }
-}
-
void ScopDetection::printLocations(llvm::Function &F) {
for (const Region *R : *this) {
unsigned LineEntry, LineExit;
diff --git a/lib/Analysis/ScopDetectionDiagnostic.cpp b/lib/Analysis/ScopDetectionDiagnostic.cpp
index 4a3091d..eaed954 100644
--- a/lib/Analysis/ScopDetectionDiagnostic.cpp
+++ b/lib/Analysis/ScopDetectionDiagnostic.cpp
@@ -26,6 +26,9 @@
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/Statistic.h"
+#include "llvm/Analysis/RegionInfo.h"
+#include "llvm/IR/DebugInfo.h"
+
#define DEBUG_TYPE "polly-detect"
#include "llvm/Support/Debug.h"
@@ -55,6 +58,29 @@ template <typename T> std::string operator+(Twine LHS, const T &RHS) {
return LHS.concat(Buf).str();
}
+void getDebugLocation(const Region *R, unsigned &LineBegin, unsigned &LineEnd,
+ std::string &FileName) {
+ LineBegin = -1;
+ LineEnd = 0;
+
+ for (const BasicBlock *BB : R->blocks())
+ for (const Instruction &Inst : *BB) {
+ DebugLoc DL = Inst.getDebugLoc();
+ if (DL.isUnknown())
+ continue;
+
+ DIScope Scope(DL.getScope(Inst.getContext()));
+
+ if (FileName.empty())
+ FileName = Scope.getFilename();
+
+ unsigned NewLine = DL.getLine();
+
+ LineBegin = std::min(LineBegin, NewLine);
+ LineEnd = std::max(LineEnd, NewLine);
+ }
+}
+
//===----------------------------------------------------------------------===//
// ReportCFG.
@@ -205,4 +231,5 @@ std::string ReportPHIinExit::getMessage() const {
std::string ReportEntry::getMessage() const {
return "Region containing entry block of function is invalid!";
}
+
} // namespace polly
--
2.0.0
More information about the llvm-commits
mailing list