summaryrefslogtreecommitdiff
path: root/clang/include/clang/Analysis/Analyses/Interval.h
diff options
context:
space:
mode:
authorZancanaro; Carlo <czan8762@plang3.cs.usyd.edu.au>2012-11-27 14:56:56 +1100
committerZancanaro; Carlo <czan8762@plang3.cs.usyd.edu.au>2012-11-27 14:56:56 +1100
commit51dd6b2b022ade7a1fc4ec8c404d9b81c7e961f5 (patch)
tree47872b121fa330fc1003ec9786e03bee55c8602b /clang/include/clang/Analysis/Analyses/Interval.h
parentc0e0ae1e0399e17b5ad5f9a22905ab352153c8b7 (diff)
Updated solver stuff. This really should have already been in here...
Diffstat (limited to 'clang/include/clang/Analysis/Analyses/Interval.h')
-rw-r--r--clang/include/clang/Analysis/Analyses/Interval.h18
1 files changed, 17 insertions, 1 deletions
diff --git a/clang/include/clang/Analysis/Analyses/Interval.h b/clang/include/clang/Analysis/Analyses/Interval.h
index 8bb8d0f..2b37cba 100644
--- a/clang/include/clang/Analysis/Analyses/Interval.h
+++ b/clang/include/clang/Analysis/Analyses/Interval.h
@@ -19,6 +19,19 @@
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/ImmutableSet.h"
+#include "clang/Analysis/Analyses/IntervalSolver/Complete.hpp"
+
+#include <vector>
+#include <map>
+#include <string>
+
+
+typedef Complete<int64_t> ZBar;
+template<>
+inline ZBar infinity() {
+ return ZBar(1, true);
+}
+
namespace clang {
class CFG;
@@ -26,14 +39,17 @@ class CFGBlock;
class Stmt;
class DeclRefExpr;
class SourceManager;
+
+typedef std::vector<std::map<std::string,int> > ConstraintMatrix;
+
class IntervalAnalysis : public ManagedAnalysis {
public:
IntervalAnalysis(AnalysisDeclContext &analysisContext);
virtual ~IntervalAnalysis();
- void runOnAllBlocks(const Decl&);
+ std::map<CFGBlock*,std::vector<ZBar> > runOnAllBlocks(const Decl&, const ConstraintMatrix&);
static IntervalAnalysis *create(AnalysisDeclContext &analysisContext) {
return new IntervalAnalysis(analysisContext);