diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2011-02-20 13:06:31 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2011-02-20 13:06:31 +0000 | 
| commit | bca07a4524feb4edec581062d631a13116320a24 (patch) | |
| tree | a9243275843fbeaa590afc07ee888e006b8d54ea /lib/StaticAnalyzer/Core/AnalysisManager.cpp | |
| parent | 998bc5802ecdd65ce3b270f6c69a8ae8557f0a10 (diff) | |
Notes
Diffstat (limited to 'lib/StaticAnalyzer/Core/AnalysisManager.cpp')
| -rw-r--r-- | lib/StaticAnalyzer/Core/AnalysisManager.cpp | 32 | 
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/StaticAnalyzer/Core/AnalysisManager.cpp b/lib/StaticAnalyzer/Core/AnalysisManager.cpp new file mode 100644 index 000000000000..5f4f83c0a8dc --- /dev/null +++ b/lib/StaticAnalyzer/Core/AnalysisManager.cpp @@ -0,0 +1,32 @@ +//===-- AnalysisManager.cpp -------------------------------------*- C++ -*-===// +// +//                     The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h" +#include "clang/Index/Entity.h" +#include "clang/Index/Indexer.h" + +using namespace clang; +using namespace ento; + +AnalysisContext * +AnalysisManager::getAnalysisContextInAnotherTU(const Decl *D) { +  idx::Entity Ent = idx::Entity::get(const_cast<Decl *>(D),  +                                     Idxer->getProgram()); +  FunctionDecl *FuncDef; +  idx::TranslationUnit *TU; +  llvm::tie(FuncDef, TU) = Idxer->getDefinitionFor(Ent); + +  if (FuncDef == 0) +    return 0; + +  // This AnalysisContext wraps function definition in another translation unit. +  // But it is still owned by the AnalysisManager associated with the current +  // translation unit. +  return AnaCtxMgr.getContext(FuncDef, TU); +}  | 
