blob: 767ae4ab75d2302f598da5ca0583457b7997e114 [file] [log] [blame]
Zhongxing Xuc6238d22010-07-19 01:31:21 +00001//===-- 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
Argyrios Kyrtzidis98cabba2010-12-22 18:51:49 +000010#include "clang/GR/PathSensitive/AnalysisManager.h"
Zhongxing Xuc6238d22010-07-19 01:31:21 +000011#include "clang/Index/Entity.h"
12#include "clang/Index/Indexer.h"
13
14using namespace clang;
Ted Kremenek9ef65372010-12-23 07:20:52 +000015using namespace ento;
Zhongxing Xuc6238d22010-07-19 01:31:21 +000016
Zhongxing Xu19b78d92010-11-24 08:53:20 +000017AnalysisContext *
Zhongxing Xuc6238d22010-07-19 01:31:21 +000018AnalysisManager::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}