1 //== CheckerContext.cpp - Context info for path-sensitive checkers-----------=//
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 //  This file defines CheckerContext that provides contextual info for
11 //  path-sensitive checkers.
12 //
13 //===----------------------------------------------------------------------===//
14 
15 #include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h"
16 using namespace clang;
17 using namespace ento;
18 
19 StringRef CheckerContext::getCalleeName(const CallExpr *CE) const {
20   const ProgramState *State = getState();
21   const Expr *Callee = CE->getCallee();
22   SVal L = State->getSVal(Callee);
23 
24   const FunctionDecl *funDecl = L.getAsFunctionDecl();
25   if (!funDecl)
26     return StringRef();
27   IdentifierInfo *funI = funDecl->getIdentifier();
28   if (!funI)
29     return StringRef();
30   return funI->getName();
31 }
32