AnalysisManager.cpp revision 9b663716449b618ba0390b1dbebc54fa8e971124
1//===-- AnalysisManager.cpp -------------------------------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10#include "clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h" 11#include "clang/Index/Entity.h" 12#include "clang/Index/Indexer.h" 13 14using namespace clang; 15using namespace ento; 16 17AnalysisContext * 18AnalysisManager::getAnalysisContextInAnotherTU(const Decl *D) { 19 idx::Entity Ent = idx::Entity::get(const_cast<Decl *>(D), 20 Idxer->getProgram()); 21 FunctionDecl *FuncDef; 22 idx::TranslationUnit *TU; 23 llvm::tie(FuncDef, TU) = Idxer->getDefinitionFor(Ent); 24 25 if (FuncDef == 0) 26 return 0; 27 28 // This AnalysisContext wraps function definition in another translation unit. 29 // But it is still owned by the AnalysisManager associated with the current 30 // translation unit. 31 return AnaCtxMgr.getContext(FuncDef, TU); 32} 33