diff options
author | dim <dim@FreeBSD.org> | 2011-02-20 13:06:31 +0000 |
---|---|---|
committer | dim <dim@FreeBSD.org> | 2011-02-20 13:06:31 +0000 |
commit | 39fcc9a984e2820e4ea0fa2ac4abd17d9f3a31df (patch) | |
tree | a9243275843fbeaa590afc07ee888e006b8d54ea /lib/Analysis/AnalysisContext.cpp | |
parent | 69b4eca4a4255ba43baa5c1d9bbdec3ec17f479e (diff) | |
download | FreeBSD-src-39fcc9a984e2820e4ea0fa2ac4abd17d9f3a31df.zip FreeBSD-src-39fcc9a984e2820e4ea0fa2ac4abd17d9f3a31df.tar.gz |
Vendor import of clang trunk r126079:
http://llvm.org/svn/llvm-project/cfe/trunk@126079
Diffstat (limited to 'lib/Analysis/AnalysisContext.cpp')
-rw-r--r-- | lib/Analysis/AnalysisContext.cpp | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/lib/Analysis/AnalysisContext.cpp b/lib/Analysis/AnalysisContext.cpp index bf9f967..5233d3b 100644 --- a/lib/Analysis/AnalysisContext.cpp +++ b/lib/Analysis/AnalysisContext.cpp @@ -59,7 +59,11 @@ CFG *AnalysisContext::getCFG() { return getUnoptimizedCFG(); if (!builtCFG) { - cfg = CFG::buildCFG(D, getBody(), &D->getASTContext(), true, AddEHEdges); + CFG::BuildOptions B; + B.AddEHEdges = AddEHEdges; + B.AddImplicitDtors = AddImplicitDtors; + B.AddInitializers = AddInitializers; + cfg = CFG::buildCFG(D, getBody(), &D->getASTContext(), B); // Even when the cfg is not successfully built, we don't // want to try building it again. builtCFG = true; @@ -69,8 +73,12 @@ CFG *AnalysisContext::getCFG() { CFG *AnalysisContext::getUnoptimizedCFG() { if (!builtCompleteCFG) { - completeCFG = CFG::buildCFG(D, getBody(), &D->getASTContext(), - false, AddEHEdges); + CFG::BuildOptions B; + B.PruneTriviallyFalseEdges = false; + B.AddEHEdges = AddEHEdges; + B.AddImplicitDtors = AddImplicitDtors; + B.AddInitializers = AddInitializers; + completeCFG = CFG::buildCFG(D, getBody(), &D->getASTContext(), B); // Even when the cfg is not successfully built, we don't // want to try building it again. builtCompleteCFG = true; @@ -78,6 +86,10 @@ CFG *AnalysisContext::getUnoptimizedCFG() { return completeCFG; } +void AnalysisContext::dumpCFG() { + getCFG()->dump(getASTContext().getLangOptions()); +} + ParentMap &AnalysisContext::getParentMap() { if (!PM) PM = new ParentMap(getBody()); @@ -122,7 +134,8 @@ AnalysisContext *AnalysisContextManager::getContext(const Decl *D, idx::TranslationUnit *TU) { AnalysisContext *&AC = Contexts[D]; if (!AC) - AC = new AnalysisContext(D, TU, UseUnoptimizedCFG); + AC = new AnalysisContext(D, TU, UseUnoptimizedCFG, false, + AddImplicitDtors, AddInitializers); return AC; } @@ -179,8 +192,8 @@ LocationContextManager::getLocationContext(AnalysisContext *ctx, const StackFrameContext* LocationContextManager::getStackFrame(AnalysisContext *ctx, const LocationContext *parent, - const Stmt *s, const CFGBlock *blk, - unsigned idx) { + const Stmt *s, + const CFGBlock *blk, unsigned idx) { llvm::FoldingSetNodeID ID; StackFrameContext::Profile(ID, ctx, parent, s, blk, idx); void *InsertPos; @@ -260,7 +273,7 @@ public: } void VisitStmt(Stmt *S) { - for (Stmt::child_iterator I = S->child_begin(), E = S->child_end();I!=E;++I) + for (Stmt::child_range I = S->children(); I; ++I) if (Stmt *child = *I) Visit(child); } |