diff options
author | Zancanaro; Carlo <czan8762@plang3.cs.usyd.edu.au> | 2012-11-27 14:56:56 +1100 |
---|---|---|
committer | Zancanaro; Carlo <czan8762@plang3.cs.usyd.edu.au> | 2012-11-27 14:56:56 +1100 |
commit | 51dd6b2b022ade7a1fc4ec8c404d9b81c7e961f5 (patch) | |
tree | 47872b121fa330fc1003ec9786e03bee55c8602b /clang/include/clang/Analysis/Analyses/Interval.h | |
parent | c0e0ae1e0399e17b5ad5f9a22905ab352153c8b7 (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.h | 18 |
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); |