#include "clang/AST/Type.h"
namespace clang {
-namespace GR {
+namespace ento {
namespace cocoa {
enum NamingConvention { NoConvention, CreateRule, InitRule };
class ASTConsumer;
class Preprocessor;
-namespace GR {
+namespace ento {
/// CreateAnalysisConsumer - Creates an ASTConsumer to run various code
/// analysis passes. (The set of analyses run is controlled by command-line
class Stmt;
class ParentMap;
-namespace GR {
+namespace ento {
class PathDiagnostic;
class PathDiagnosticPiece;
namespace clang {
-namespace GR {
+namespace ento {
class ExplodedNode;
class ExprEngine;
class SourceManager;
class Stmt;
-namespace GR {
+namespace ento {
//===----------------------------------------------------------------------===//
// High-level interface for handlers of path-sensitive diagnostics.
namespace clang {
-namespace GR {
+namespace ento {
class ExprEngine;
class ExplodedNode;
class LangOptions;
class TranslationUnitDecl;
-namespace GR {
+namespace ento {
class PathDiagnosticClient;
class TransferFuncs;
namespace clang {
-namespace GR {
+namespace ento {
//===----------------------------------------------------------------------===//
// AST Consumer Actions
namespace clang {
-namespace GR {
+namespace ento {
/// ManagerRegistry - This class records manager creators registered at
/// runtime. The information is communicated to AnalysisManager through static
class Preprocessor;
-namespace GR {
+namespace ento {
class PathDiagnosticClient;
class TranslationUnit;
}
-namespace GR {
+namespace ento {
class AnalysisManager : public BugReporterData {
AnalysisContextManager AnaCtxMgr;
namespace clang {
-namespace GR {
+namespace ento {
class GRState;
class StackFrameContext;
-namespace GR {
+namespace ento {
class BlockCounter {
void* Data;
namespace clang {
-namespace GR {
+namespace ento {
class CheckerContext {
ExplodedNodeSet &Dst;
namespace clang {
-namespace GR {
+namespace ento {
bool containsMacro(const Stmt *S);
bool containsEnum(const Stmt *S);
namespace clang {
-namespace GR {
+namespace ento {
//===----------------------------------------------------------------------===//
// Checker visitor interface. Used by subclasses of Checker to specify their
namespace clang {
-namespace GR {
+namespace ento {
class GRState;
class GRStateManager;
namespace clang {
-namespace GR {
+namespace ento {
//===----------------------------------------------------------------------===//
/// CoreEngine - Implements the core logic of the graph-reachability
class LiveVariables;
-namespace GR {
+namespace ento {
class EnvironmentManager;
class SValBuilder;
class CFG;
-namespace GR {
+namespace ento {
class GRState;
class ExplodedGraph;
// GraphTraits
namespace llvm {
- template<> struct GraphTraits<clang::GR::ExplodedNode*> {
- typedef clang::GR::ExplodedNode NodeType;
+ template<> struct GraphTraits<clang::ento::ExplodedNode*> {
+ typedef clang::ento::ExplodedNode NodeType;
typedef NodeType::succ_iterator ChildIteratorType;
typedef llvm::df_iterator<NodeType*> nodes_iterator;
}
};
- template<> struct GraphTraits<const clang::GR::ExplodedNode*> {
- typedef const clang::GR::ExplodedNode NodeType;
+ template<> struct GraphTraits<const clang::ento::ExplodedNode*> {
+ typedef const clang::ento::ExplodedNode NodeType;
typedef NodeType::const_succ_iterator ChildIteratorType;
typedef llvm::df_iterator<NodeType*> nodes_iterator;
class ObjCForCollectionStmt;
-namespace GR {
+namespace ento {
class AnalysisManager;
class Checker;
namespace clang {
-namespace GR {
+namespace ento {
class StmtNodeBuilderRef {
ExplodedNodeSet &Dst;
namespace clang {
class ASTContext;
-namespace GR {
+namespace ento {
class GRStateManager;
class Checker;
namespace clang {
-namespace GR {
+namespace ento {
template <typename T> struct GRStatePartialTrait;
// Partial-specialization for ImmutableMap.
class LocationContext;
class StackFrameContext;
-namespace GR {
+namespace ento {
class MemRegionManager;
class MemSpaceRegion;
namespace llvm {
static inline raw_ostream& operator<<(raw_ostream& os,
- const clang::GR::MemRegion* R) {
+ const clang::ento::MemRegion* R) {
R->dumpToStream(os);
return os;
}
namespace clang {
-namespace GR {
+namespace ento {
class GRState;
namespace clang {
-namespace GR {
+namespace ento {
class CompoundValData;
class LazyCompoundValData;
};
class LocAsInteger : public NonLoc {
- friend class GR::SValBuilder;
+ friend class ento::SValBuilder;
explicit LocAsInteger(const std::pair<SVal, uintptr_t>& data) :
NonLoc(LocAsIntegerKind, &data) {
};
class CompoundVal : public NonLoc {
- friend class GR::SValBuilder;
+ friend class ento::SValBuilder;
explicit CompoundVal(const CompoundValData* D) : NonLoc(CompoundValKind, D) {}
};
class LazyCompoundVal : public NonLoc {
- friend class GR::SValBuilder;
+ friend class ento::SValBuilder;
explicit LazyCompoundVal(const LazyCompoundValData *D)
: NonLoc(LazyCompoundValKind, D) {}
}
};
-} // end namespace GR::nonloc
+} // end namespace ento::nonloc
//==------------------------------------------------------------------------==//
// Subclasses of Loc.
}
};
-} // end GR::loc namespace
+} // end ento::loc namespace
} // end GR namespace
} // end clang namespace
namespace llvm {
static inline llvm::raw_ostream& operator<<(llvm::raw_ostream& os,
- clang::GR::SVal V) {
+ clang::ento::SVal V) {
V.dumpToStream(os);
return os;
}
class ObjCIvarDecl;
class StackFrameContext;
-namespace GR {
+namespace ento {
/// Store - This opaque type encapsulates an immutable mapping from
/// locations to values. At a high-level, it represents the symbolic
class LocationContext;
class Stmt;
-namespace GR {
+namespace ento {
class AnalysisManager;
class ExplodedNode;
namespace clang {
-namespace GR {
+namespace ento {
namespace summMgr {
class ASTContext;
class StackFrameContext;
-namespace GR {
+namespace ento {
class BasicValueFactory;
class MemRegion;
class SubRegion;
namespace llvm {
static inline llvm::raw_ostream& operator<<(llvm::raw_ostream& os,
- const clang::GR::SymExpr *SE) {
+ const clang::ento::SymExpr *SE) {
SE->dumpToStream(os);
return os;
}
namespace clang {
class ObjCMessageExpr;
-namespace GR {
+namespace ento {
class ExplodedNode;
class ExplodedNodeSet;
class EndPathNodeBuilder;
class CFGBlock;
-namespace GR {
+namespace ento {
class ExplodedNode;
class ExplodedNodeImpl;
#include "llvm/ADT/StringExtras.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
using llvm::StringRef;
case RewriteMacros: return new RewriteMacrosAction();
case RewriteObjC: return new RewriteObjCAction();
case RewriteTest: return new RewriteTestAction();
- case RunAnalysis: return new GR::AnalysisAction();
+ case RunAnalysis: return new ento::AnalysisAction();
case RunPreprocessorOnly: return new PreprocessOnlyAction();
}
}
#include "clang/AST/StmtVisitor.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
/// AggExprVisitor is designed after AggExprEmitter of the CodeGen module. It
#include "clang/Index/Indexer.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
AnalysisContext *
AnalysisManager::getAnalysisContextInAnotherTU(const Decl *D) {
#include "llvm/ADT/SmallPtrSet.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
class AnalyzerStatsChecker : public CheckerVisitor<AnalyzerStatsChecker> {
return &x;
}
-void GR::RegisterAnalyzerStatsChecker(ExprEngine &Eng) {
+void ento::RegisterAnalyzerStatsChecker(ExprEngine &Eng) {
Eng.registerCheck(new AnalyzerStatsChecker());
}
#include "llvm/Support/raw_ostream.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace { class ConstNotEq {}; }
static int ConstNotEqIndex = 0;
namespace clang {
-namespace GR {
+namespace ento {
template<>
struct GRStateTrait<ConstNotEq> : public GRStatePartialTrait<ConstNotEqTy> {
static inline void* GDMIndex() { return &ConstNotEqIndex; }
} // end anonymous namespace
-ConstraintManager* GR::CreateBasicConstraintManager(GRStateManager& statemgr,
+ConstraintManager* ento::CreateBasicConstraintManager(GRStateManager& statemgr,
SubEngine &subengine) {
return new BasicConstraintManager(statemgr, subengine);
}
#include "llvm/ADT/ImmutableMap.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
typedef llvm::ImmutableMap<const MemRegion*,SVal> BindingsTy;
} // end anonymous namespace
-StoreManager* GR::CreateBasicStoreManager(GRStateManager& StMgr) {
+StoreManager* ento::CreateBasicStoreManager(GRStateManager& StMgr) {
return new BasicStoreManager(StMgr);
}
#include "clang/GR/PathSensitive/BasicValueFactory.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
void CompoundValData::Profile(llvm::FoldingSetNodeID& ID, QualType T,
llvm::ImmutableList<SVal> L) {
#include "llvm/ADT/ImmutableMap.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
#include <queue>
using namespace clang;
-using namespace GR;
+using namespace ento;
BugReporterVisitor::~BugReporterVisitor() {}
BugReporterContext::~BugReporterContext() {
#include "clang/GR/PathSensitive/GRState.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
//===----------------------------------------------------------------------===//
// Utility functions.
#include <stdarg.h>
using namespace clang;
-using namespace GR;
+using namespace ento;
using llvm::StringRef;
using llvm::StrInStrNoCase;
typedef llvm::ImmutableMap<SymbolRef, RefVal> RefBindings;
namespace clang {
-namespace GR {
+namespace ento {
template<>
struct GRStateTrait<RefBindings> : public GRStatePartialTrait<RefBindings> {
static void* GDMIndex() {
namespace { class AutoreleaseStack {}; }
namespace clang {
-namespace GR {
+namespace ento {
template<> struct GRStateTrait<AutoreleaseStack>
: public GRStatePartialTrait<ARStack> {
static inline void* GDMIndex() { return &AutoRBIndex; }
Eng.registerCheck(new RetainReleaseChecker(this));
}
-TransferFuncs* GR::MakeCFRefCountTF(ASTContext& Ctx, bool GCEnabled,
+TransferFuncs* ento::MakeCFRefCountTF(ASTContext& Ctx, bool GCEnabled,
const LangOptions& lopts) {
return new CFRefCount(Ctx, GCEnabled, lopts);
}
#include "clang/AST/DeclCXX.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
class CallExprWLItem {
#include "clang/GR/PathSensitive/Checker.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
Checker::~Checker() {}
#include "clang/AST/Expr.h"
// Recursively find any substatements containing macros
-bool clang::GR::containsMacro(const Stmt *S) {
+bool clang::ento::containsMacro(const Stmt *S) {
if (S->getLocStart().isMacroID())
return true;
}
// Recursively find any substatements containing enum constants
-bool clang::GR::containsEnum(const Stmt *S) {
+bool clang::ento::containsEnum(const Stmt *S) {
const DeclRefExpr *DR = dyn_cast<DeclRefExpr>(S);
if (DR && isa<EnumConstantDecl>(DR->getDecl()))
}
// Recursively find any substatements containing static vars
-bool clang::GR::containsStaticLocal(const Stmt *S) {
+bool clang::ento::containsStaticLocal(const Stmt *S) {
const DeclRefExpr *DR = dyn_cast<DeclRefExpr>(S);
if (DR)
}
// Recursively find any substatements containing __builtin_offsetof
-bool clang::GR::containsBuiltinOffsetOf(const Stmt *S) {
+bool clang::ento::containsBuiltinOffsetOf(const Stmt *S) {
if (isa<OffsetOfExpr>(S))
return true;
#include "clang/GR/PathSensitive/CheckerVisitor.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
class AdjustedReturnValueChecker :
};
}
-void GR::RegisterAdjustedReturnValueChecker(ExprEngine &Eng) {
+void ento::RegisterAdjustedReturnValueChecker(ExprEngine &Eng) {
Eng.registerCheck(new AdjustedReturnValueChecker());
}
#include "llvm/ADT/OwningPtr.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
static ExplodedNode::Auditor* CreateUbiViz();
// AnalysisConsumer creation.
//===----------------------------------------------------------------------===//
-ASTConsumer* GR::CreateAnalysisConsumer(const Preprocessor& pp,
+ASTConsumer* ento::CreateAnalysisConsumer(const Preprocessor& pp,
const std::string& OutDir,
const AnalyzerOptions& Opts) {
llvm::OwningPtr<AnalysisConsumer> C(new AnalysisConsumer(pp, OutDir, Opts));
#include "clang/GR/PathSensitive/ExprEngine.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
class ArrayBoundChecker :
};
}
-void GR::RegisterArrayBoundChecker(ExprEngine &Eng) {
+void ento::RegisterArrayBoundChecker(ExprEngine &Eng) {
Eng.registerCheck(new ArrayBoundChecker());
}
#include "clang/AST/CharUnits.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
class ArrayBoundCheckerV2 :
};
}
-void GR::RegisterArrayBoundCheckerV2(ExprEngine &Eng) {
+void ento::RegisterArrayBoundCheckerV2(ExprEngine &Eng) {
Eng.registerCheck(new ArrayBoundCheckerV2());
}
#include "clang/GR/PathSensitive/CheckerVisitor.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
class AttrNonNullChecker
};
} // end anonymous namespace
-void GR::RegisterAttrNonNullChecker(ExprEngine &Eng) {
+void ento::RegisterAttrNonNullChecker(ExprEngine &Eng) {
Eng.registerCheck(new AttrNonNullChecker());
}
#include "clang/AST/ASTContext.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
class APIMisuse : public BugType {
// Check registration.
//===----------------------------------------------------------------------===//
-void GR::RegisterAppleChecks(ExprEngine& Eng, const Decl &D) {
+void ento::RegisterAppleChecks(ExprEngine& Eng, const Decl &D) {
Eng.registerCheck(new NilArgChecker());
Eng.registerCheck(new CFNumberCreateChecker());
RegisterNSErrorChecks(Eng.getBugReporter(), Eng, D);
class ASTContext;
class Decl;
-namespace GR {
+namespace ento {
class BugReporter;
class ExprEngine;
#include "clang/Basic/Builtins.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
}
-void GR::RegisterBuiltinFunctionChecker(ExprEngine &Eng) {
+void ento::RegisterBuiltinFunctionChecker(ExprEngine &Eng) {
Eng.registerCheck(new BuiltinFunctionChecker());
}
#include "llvm/ADT/StringSwitch.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
class CStringChecker : public CheckerVisitor<CStringChecker> {
} //end anonymous namespace
namespace clang {
-namespace GR {
+namespace ento {
template <>
struct GRStateTrait<CStringLength>
: public GRStatePartialTrait<CStringLength::EntryMap> {
}
}
-void GR::RegisterCStringChecker(ExprEngine &Eng) {
+void ento::RegisterCStringChecker(ExprEngine &Eng) {
Eng.registerCheck(new CStringChecker());
}
#include "clang/GR/PathSensitive/CheckerVisitor.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
class CallAndMessageChecker
};
} // end anonymous namespace
-void GR::RegisterCallAndMessageChecker(ExprEngine &Eng) {
+void ento::RegisterCallAndMessageChecker(ExprEngine &Eng) {
Eng.registerCheck(new CallAndMessageChecker());
}
#include "ExprEngineInternalChecks.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
class CastSizeChecker : public CheckerVisitor<CastSizeChecker> {
}
-void GR::RegisterCastSizeChecker(ExprEngine &Eng) {
+void ento::RegisterCastSizeChecker(ExprEngine &Eng) {
Eng.registerCheck(new CastSizeChecker());
}
#include "ExprEngineInternalChecks.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
class CastToStructChecker
}
}
-void GR::RegisterCastToStructChecker(ExprEngine &Eng) {
+void ento::RegisterCastToStructChecker(ExprEngine &Eng) {
Eng.registerCheck(new CastToStructChecker());
}
#include "llvm/ADT/SmallPtrSet.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
} // end anonymous namespace
-void GR::CheckDeadStores(CFG &cfg, LiveVariables &L, ParentMap &pmap,
+void ento::CheckDeadStores(CFG &cfg, LiveVariables &L, ParentMap &pmap,
BugReporter& BR) {
FindEscaped FS(&cfg);
FS.getCFG().VisitBlockStmts(FS);
#include "llvm/Support/raw_ostream.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
static bool scan_dealloc(Stmt* S, Selector Dealloc) {
return false;
}
-void GR::CheckObjCDealloc(const ObjCImplementationDecl* D,
+void ento::CheckObjCDealloc(const ObjCImplementationDecl* D,
const LangOptions& LOpts, BugReporter& BR) {
assert (LOpts.getGCMode() != LangOptions::GCOnly);
#include "llvm/Support/raw_ostream.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
static bool AreTypesCompatible(QualType Derived, QualType Ancestor,
ASTContext& C) {
}
}
-void GR::CheckObjCInstMethSignature(const ObjCImplementationDecl* ID,
+void ento::CheckObjCInstMethSignature(const ObjCImplementationDecl* ID,
BugReporter& BR) {
const ObjCInterfaceDecl* D = ID->getClassInterface();
#include "llvm/Support/raw_ostream.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
static bool isArc4RandomAvailable(const ASTContext &Ctx) {
const llvm::Triple &T = Ctx.Target.getTriple();
// Entry point for check.
//===----------------------------------------------------------------------===//
-void GR::CheckSecuritySyntaxOnly(const Decl *D, BugReporter &BR) {
+void ento::CheckSecuritySyntaxOnly(const Decl *D, BugReporter &BR) {
WalkAST walker(BR);
walker.Visit(D->getBody());
}
#include "clang/GR/Checkers/LocalCheckers.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
class WalkAST : public StmtVisitor<WalkAST> {
}
}
-void GR::CheckSizeofPointer(const Decl *D, BugReporter &BR) {
+void ento::CheckSizeofPointer(const Decl *D, BugReporter &BR) {
WalkAST walker(BR);
walker.Visit(D->getBody());
}
#include "clang/GR/PathSensitive/SymbolManager.h"
#include "llvm/ADT/ImmutableMap.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
} // end anonymous namespace
-void GR::RegisterChrootChecker(ExprEngine &Eng) {
+void ento::RegisterChrootChecker(ExprEngine &Eng) {
Eng.registerCheck(new ChrootChecker());
}
#include "clang/GR/PathSensitive/ExprEngine.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
class DereferenceChecker : public Checker {
};
} // end anonymous namespace
-void GR::RegisterDereferenceChecker(ExprEngine &Eng) {
+void ento::RegisterDereferenceChecker(ExprEngine &Eng) {
Eng.registerCheck(new DereferenceChecker());
}
std::pair<ExplodedNode * const *, ExplodedNode * const *>
-GR::GetImplicitNullDereferences(ExprEngine &Eng) {
+ento::GetImplicitNullDereferences(ExprEngine &Eng) {
DereferenceChecker *checker = Eng.getChecker<DereferenceChecker>();
if (!checker)
return std::make_pair((ExplodedNode * const *) 0,
#include "clang/GR/PathSensitive/CheckerVisitor.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
class DivZeroChecker : public CheckerVisitor<DivZeroChecker> {
};
} // end anonymous namespace
-void GR::RegisterDivZeroChecker(ExprEngine &Eng) {
+void ento::RegisterDivZeroChecker(ExprEngine &Eng) {
Eng.registerCheck(new DivZeroChecker());
}
#endif
using namespace clang;
-using namespace GR;
+using namespace ento;
using llvm::dyn_cast;
using llvm::dyn_cast_or_null;
using llvm::cast;
#include "clang/GR/Checkers/LocalCheckers.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
-void GR::RegisterExperimentalChecks(ExprEngine &Eng) {
+void ento::RegisterExperimentalChecks(ExprEngine &Eng) {
// These are checks that never belong as internal checks
// within ExprEngine.
RegisterCStringChecker(Eng);
RegisterUnreachableCodeChecker(Eng);
}
-void GR::RegisterExperimentalInternalChecks(ExprEngine &Eng) {
+void ento::RegisterExperimentalInternalChecks(ExprEngine &Eng) {
// These are internal checks that should eventually migrate to
// RegisterInternalChecks() once they have been further tested.
namespace clang {
-namespace GR {
+namespace ento {
class ExprEngine;
namespace clang {
-namespace GR {
+namespace ento {
class ExprEngine;
#include "clang/GR/PathSensitive/CheckerVisitor.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
class FixedAddressChecker
}
}
-void GR::RegisterFixedAddressChecker(ExprEngine &Eng) {
+void ento::RegisterFixedAddressChecker(ExprEngine &Eng) {
Eng.registerCheck(new FixedAddressChecker());
}
#include "clang/Frontend/CompilerInstance.h"
#include "clang/GR/AnalysisConsumer.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
ASTConsumer *AnalysisAction::CreateASTConsumer(CompilerInstance &CI,
llvm::StringRef InFile) {
#include <deque>
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
class IdempotentOperationChecker
return &x;
}
-void GR::RegisterIdempotentOperationChecker(ExprEngine &Eng) {
+void ento::RegisterIdempotentOperationChecker(ExprEngine &Eng) {
Eng.registerCheck(new IdempotentOperationChecker());
}
#include "llvm/ADT/StringRef.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
//===----------------------------------------------------------------------===//
// Generic type checking routines.
}
}
-void GR::CheckLLVMConventions(TranslationUnitDecl &TU,
+void ento::CheckLLVMConventions(TranslationUnitDecl &TU,
BugReporter &BR) {
ScanCodeDecls(&TU, BR);
}
#include "llvm/Support/raw_ostream.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
class MacOSXAPIChecker : public CheckerVisitor<MacOSXAPIChecker> {
};
} //end anonymous namespace
-void GR::RegisterMacOSXAPIChecker(ExprEngine &Eng) {
+void ento::RegisterMacOSXAPIChecker(ExprEngine &Eng) {
if (Eng.getContext().Target.getTriple().getVendor() == llvm::Triple::Apple)
Eng.registerCheck(new MacOSXAPIChecker());
}
#include "clang/GR/PathSensitive/SymbolManager.h"
#include "llvm/ADT/ImmutableMap.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
typedef llvm::ImmutableMap<SymbolRef, RefState> RegionStateTy;
namespace clang {
-namespace GR {
+namespace ento {
template <>
struct GRStateTrait<RegionState>
: public GRStatePartialTrait<RegionStateTy> {
}
}
-void GR::RegisterMallocChecker(ExprEngine &Eng) {
+void ento::RegisterMallocChecker(ExprEngine &Eng) {
Eng.registerCheck(new MallocChecker());
}
#include "clang/AST/Decl.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
class NSAutoreleasePoolChecker
} // end anonymous namespace
-void GR::RegisterNSAutoreleasePoolChecks(ExprEngine &Eng) {
+void ento::RegisterNSAutoreleasePoolChecks(ExprEngine &Eng) {
ASTContext &Ctx = Eng.getContext();
if (Ctx.getLangOptions().getGCMode() != LangOptions::NonGC) {
Eng.registerCheck(new NSAutoreleasePoolChecker(GetNullarySelector("release",
#include "llvm/ADT/SmallVector.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
class NSErrorChecker : public BugType {
} // end anonymous namespace
-void GR::RegisterNSErrorChecks(BugReporter& BR, ExprEngine &Eng,
+void ento::RegisterNSErrorChecks(BugReporter& BR, ExprEngine &Eng,
const Decl &D) {
BR.Register(new NSErrorChecker(D, true, Eng));
BR.Register(new NSErrorChecker(D, false, Eng));
#include "llvm/ADT/StringSwitch.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
}
-void GR::RegisterNoReturnFunctionChecker(ExprEngine &Eng) {
+void ento::RegisterNoReturnFunctionChecker(ExprEngine &Eng) {
Eng.registerCheck(new NoReturnFunctionChecker());
}
#include "clang/Basic/Builtins.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
}
-void GR::RegisterOSAtomicChecker(ExprEngine &Eng) {
+void ento::RegisterOSAtomicChecker(ExprEngine &Eng) {
Eng.registerCheck(new OSAtomicChecker());
}
#include "clang/GR/PathSensitive/ExprEngine.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
class ObjCAtSyncChecker : public CheckerVisitor<ObjCAtSyncChecker> {
};
} // end anonymous namespace
-void GR::RegisterObjCAtSyncChecker(ExprEngine &Eng) {
+void ento::RegisterObjCAtSyncChecker(ExprEngine &Eng) {
// @synchronized is an Objective-C 2 feature.
if (Eng.getContext().getLangOptions().ObjC2)
Eng.registerCheck(new ObjCAtSyncChecker());
#include "clang/Basic/SourceManager.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
enum IVarState { Unused, Used };
typedef llvm::DenseMap<const ObjCIvarDecl*,IVarState> IvarUsageMap;
}
}
-void GR::CheckObjCUnusedIvar(const ObjCImplementationDecl *D,
+void ento::CheckObjCUnusedIvar(const ObjCImplementationDecl *D,
BugReporter &BR) {
const ObjCInterfaceDecl* ID = D->getClassInterface();
#include "clang/GR/PathSensitive/CheckerVisitor.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
class PointerArithChecker
}
}
-void GR::RegisterPointerArithChecker(ExprEngine &Eng) {
+void ento::RegisterPointerArithChecker(ExprEngine &Eng) {
Eng.registerCheck(new PointerArithChecker());
}
#include "clang/GR/PathSensitive/CheckerVisitor.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
class PointerSubChecker
}
}
-void GR::RegisterPointerSubChecker(ExprEngine &Eng) {
+void ento::RegisterPointerSubChecker(ExprEngine &Eng) {
Eng.registerCheck(new PointerSubChecker());
}
#include "llvm/ADT/ImmutableSet.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
class PthreadLockChecker
// GDM Entry for tracking lock state.
namespace { class LockSet {}; }
namespace clang {
-namespace GR {
+namespace ento {
template <> struct GRStateTrait<LockSet> :
public GRStatePartialTrait<llvm::ImmutableSet<const MemRegion*> > {
static void* GDMIndex() { return PthreadLockChecker::getTag(); }
} // end GR namespace
} // end clang namespace
-void GR::RegisterPthreadLockChecker(ExprEngine &Eng) {
+void ento::RegisterPthreadLockChecker(ExprEngine &Eng) {
Eng.registerCheck(new PthreadLockChecker());
}
#include "clang/GR/PathSensitive/ExprEngine.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
class ReturnPointerRangeChecker :
};
}
-void GR::RegisterReturnPointerRangeChecker(ExprEngine &Eng) {
+void ento::RegisterReturnPointerRangeChecker(ExprEngine &Eng) {
Eng.registerCheck(new ReturnPointerRangeChecker());
}
#include "clang/GR/PathSensitive/ExprEngine.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
class ReturnUndefChecker :
};
}
-void GR::RegisterReturnUndefChecker(ExprEngine &Eng) {
+void ento::RegisterReturnUndefChecker(ExprEngine &Eng) {
Eng.registerCheck(new ReturnUndefChecker());
}
#include "clang/Basic/SourceManager.h"
#include "llvm/ADT/SmallString.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
class StackAddrLeakChecker : public CheckerVisitor<StackAddrLeakChecker> {
};
}
-void GR::RegisterStackAddrLeakChecker(ExprEngine &Eng) {
+void ento::RegisterStackAddrLeakChecker(ExprEngine &Eng) {
Eng.registerCheck(new StackAddrLeakChecker());
}
#include "llvm/ADT/ImmutableMap.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
} // end anonymous namespace
namespace clang {
-namespace GR {
+namespace ento {
template <>
struct GRStateTrait<StreamState>
: public GRStatePartialTrait<llvm::ImmutableMap<SymbolRef, StreamState> > {
}
}
-void GR::RegisterStreamChecker(ExprEngine &Eng) {
+void ento::RegisterStreamChecker(ExprEngine &Eng) {
Eng.registerCheck(new StreamChecker());
}
#include "clang/GR/PathSensitive/Checker.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
}
-void GR::RegisterUndefBranchChecker(ExprEngine &Eng) {
+void ento::RegisterUndefBranchChecker(ExprEngine &Eng) {
Eng.registerCheck(new UndefBranchChecker());
}
#include "llvm/Support/raw_ostream.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
class UndefCapturedBlockVarChecker
};
} // end anonymous namespace
-void GR::RegisterUndefCapturedBlockVarChecker(ExprEngine &Eng) {
+void ento::RegisterUndefCapturedBlockVarChecker(ExprEngine &Eng) {
Eng.registerCheck(new UndefCapturedBlockVarChecker());
}
#include "clang/GR/PathSensitive/ExprEngine.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
class UndefResultChecker
};
} // end anonymous namespace
-void GR::RegisterUndefResultChecker(ExprEngine &Eng) {
+void ento::RegisterUndefResultChecker(ExprEngine &Eng) {
Eng.registerCheck(new UndefResultChecker());
}
#include "clang/GR/PathSensitive/CheckerVisitor.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
class UndefinedArraySubscriptChecker
};
} // end anonymous namespace
-void GR::RegisterUndefinedArraySubscriptChecker(ExprEngine &Eng) {
+void ento::RegisterUndefinedArraySubscriptChecker(ExprEngine &Eng) {
Eng.registerCheck(new UndefinedArraySubscriptChecker());
}
#include "clang/GR/PathSensitive/CheckerVisitor.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
class UndefinedAssignmentChecker
};
}
-void GR::RegisterUndefinedAssignmentChecker(ExprEngine &Eng){
+void ento::RegisterUndefinedAssignmentChecker(ExprEngine &Eng){
Eng.registerCheck(new UndefinedAssignmentChecker());
}
#include <fcntl.h>
using namespace clang;
-using namespace GR;
+using namespace ento;
using llvm::Optional;
namespace {
};
} //end anonymous namespace
-void GR::RegisterUnixAPIChecker(ExprEngine &Eng) {
+void ento::RegisterUnixAPIChecker(ExprEngine &Eng) {
Eng.registerCheck(new UnixAPIChecker());
}
#define DEFAULT_CFGBLOCKS 256
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
class UnreachableCodeChecker : public Checker {
return &x;
}
-void GR::RegisterUnreachableCodeChecker(ExprEngine &Eng) {
+void ento::RegisterUnreachableCodeChecker(ExprEngine &Eng) {
Eng.registerCheck(new UnreachableCodeChecker());
}
#include "clang/GR/PathSensitive/ExprEngine.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
class VLASizeChecker : public CheckerVisitor<VLASizeChecker> {
};
} // end anonymous namespace
-void GR::RegisterVLASizeChecker(ExprEngine &Eng) {
+void ento::RegisterVLASizeChecker(ExprEngine &Eng) {
Eng.registerCheck(new VLASizeChecker());
}
using llvm::cast;
using llvm::isa;
using namespace clang;
-using namespace GR;
+using namespace ento;
// This should be removed in the future.
namespace clang {
-namespace GR {
+namespace ento {
TransferFuncs* MakeCFRefCountTF(ASTContext& Ctx, bool GCEnabled,
const LangOptions& lopts);
}
#include "clang/GR/PathSensitive/GRState.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
SVal Environment::lookupExpr(const Stmt* E) const {
const SVal* X = ExprBindings.lookup(E);
#include <vector>
using namespace clang;
-using namespace GR;
+using namespace ento;
//===----------------------------------------------------------------------===//
// Node auditing.
#include "llvm/Support/ErrorHandling.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
using llvm::Interval;
// The actual store type.
};
} // end anonymous namespace
-StoreManager *GR::CreateFlatStoreManager(GRStateManager &StMgr) {
+StoreManager *ento::CreateFlatStoreManager(GRStateManager &StMgr) {
return new FlatStoreManager(StMgr);
}
#include "llvm/Support/raw_ostream.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
// Give the vtable for ConstraintManager somewhere to live.
// FIXME: Move this elsewhere.
#include "llvm/Support/Path.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
//===----------------------------------------------------------------------===//
// Boilerplate.
}
PathDiagnosticClient*
-GR::createHTMLDiagnosticClient(const std::string& prefix,
- const Preprocessor &PP) {
+ento::createHTMLDiagnosticClient(const std::string& prefix,
+ const Preprocessor &PP) {
return new HTMLDiagnostics(prefix, PP);
}
#include "clang/GR/ManagerRegistry.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
StoreManagerCreator ManagerRegistry::StoreMgrCreator = 0;
#include "llvm/Support/raw_ostream.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
//===----------------------------------------------------------------------===//
// MemRegion Construction.
#include "llvm/Support/Casting.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
using llvm::dyn_cast;
using llvm::isa;
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/SmallVector.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
using llvm::cast;
typedef llvm::DenseMap<FileID, unsigned> FIDMap;
: OutputFile(output), LangOpts(LO), SubPD(subPD), flushed(false) {}
PathDiagnosticClient*
-GR::createPlistDiagnosticClient(const std::string& s, const Preprocessor &PP,
- PathDiagnosticClient *subPD) {
+ento::createPlistDiagnosticClient(const std::string& s, const Preprocessor &PP,
+ PathDiagnosticClient *subPD) {
return new PlistDiagnostics(s, PP.getLangOptions(), subPD);
}
#include "llvm/Support/raw_ostream.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace { class ConstraintRange {}; }
static int ConstraintRangeIndex = 0;
typedef llvm::ImmutableMap<SymbolRef,RangeSet> ConstraintRangeTy;
namespace clang {
-namespace GR {
+namespace ento {
template<>
struct GRStateTrait<ConstraintRange>
: public GRStatePartialTrait<ConstraintRangeTy> {
} // end anonymous namespace
-ConstraintManager* GR::CreateRangeConstraintManager(GRStateManager&,
+ConstraintManager* ento::CreateRangeConstraintManager(GRStateManager&,
SubEngine &subeng) {
return new RangeConstraintManager(subeng);
}
#include "llvm/Support/raw_ostream.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
using llvm::Optional;
//===----------------------------------------------------------------------===//
// RegionStore creation.
//===----------------------------------------------------------------------===//
-StoreManager *GR::CreateRegionStoreManager(GRStateManager& StMgr) {
+StoreManager *ento::CreateRegionStoreManager(GRStateManager& StMgr) {
RegionStoreFeatures F = maximal_features_tag();
return new RegionStoreManager(StMgr, F);
}
-StoreManager *GR::CreateFieldsOnlyRegionStoreManager(GRStateManager &StMgr) {
+StoreManager *ento::CreateFieldsOnlyRegionStoreManager(GRStateManager &StMgr) {
RegionStoreFeatures F = minimal_features_tag();
F.enableFields(true);
return new RegionStoreManager(StMgr, F);
#include "clang/GR/PathSensitive/BasicValueFactory.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
//===----------------------------------------------------------------------===//
// Basic SVal creation.
#include "clang/Basic/IdentifierTable.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
using llvm::dyn_cast;
using llvm::cast;
using llvm::APSInt;
namespace clang {
-namespace GR {
+namespace ento {
SimpleConstraintManager::~SimpleConstraintManager() {}
} // end switch
}
-} // end of namespace GR
+} // end of namespace ento
} // end of namespace clang
namespace clang {
-namespace GR {
+namespace ento {
class SimpleConstraintManager : public ConstraintManager {
SubEngine &SU;
#include "clang/GR/PathSensitive/GRState.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
namespace {
class SimpleSValBuilder : public SValBuilder {
};
} // end anonymous namespace
-SValBuilder *GR::createSimpleSValBuilder(llvm::BumpPtrAllocator &alloc,
- ASTContext &context,
- GRStateManager &stateMgr) {
+SValBuilder *ento::createSimpleSValBuilder(llvm::BumpPtrAllocator &alloc,
+ ASTContext &context,
+ GRStateManager &stateMgr) {
return new SimpleSValBuilder(alloc, context, stateMgr);
}
#include "clang/AST/CharUnits.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
StoreManager::StoreManager(GRStateManager &stateMgr)
: svalBuilder(stateMgr.getSValBuilder()), StateMgr(stateMgr),
#include "llvm/Support/raw_ostream.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
void SymExpr::dump() const {
dumpToStream(llvm::errs());
#include "clang/Lex/Preprocessor.h"
#include "llvm/Support/raw_ostream.h"
using namespace clang;
-using namespace GR;
+using namespace ento;
using namespace llvm;
namespace {
} // end anonymous namespace
PathDiagnosticClient*
-GR::createTextPathDiagnosticClient(const std::string& out,
- const Preprocessor &PP) {
+ento::createTextPathDiagnosticClient(const std::string& out,
+ const Preprocessor &PP) {
return new TextPathDiagnostics(out, PP.getDiagnostics());
}