blob: 2903f2d4cfc1ff0451c1c4d73f62501c31c7f088 [file] [log] [blame]
Argyrios Kyrtzidisd2592a32010-12-22 18:53:44 +00001//=-- ExprEngineInternalChecks.h- Builtin ExprEngine Checks -----*- 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// This file defines functions to instantiate and register the "built-in"
11// checks in ExprEngine.
12//
13//===----------------------------------------------------------------------===//
14
15#ifndef LLVM_CLANG_GR_ExprEngine_INTERNAL_CHECKS
16#define LLVM_CLANG_GR_ExprEngine_INTERNAL_CHECKS
17
18namespace clang {
19
Ted Kremenek9ef65372010-12-23 07:20:52 +000020namespace ento {
Argyrios Kyrtzidisd2592a32010-12-22 18:53:44 +000021
22class ExprEngine;
23
24// Foundational checks that handle basic semantics.
25void RegisterAdjustedReturnValueChecker(ExprEngine &Eng);
26void RegisterArrayBoundChecker(ExprEngine &Eng);
Ted Kremenekc478a142010-12-23 02:42:43 +000027void RegisterArrayBoundCheckerV2(ExprEngine &Eng);
Argyrios Kyrtzidisd2592a32010-12-22 18:53:44 +000028void RegisterAttrNonNullChecker(ExprEngine &Eng);
29void RegisterBuiltinFunctionChecker(ExprEngine &Eng);
30void RegisterCallAndMessageChecker(ExprEngine &Eng);
31void RegisterCastToStructChecker(ExprEngine &Eng);
32void RegisterCastSizeChecker(ExprEngine &Eng);
33void RegisterDereferenceChecker(ExprEngine &Eng);
34void RegisterDivZeroChecker(ExprEngine &Eng);
35void RegisterFixedAddressChecker(ExprEngine &Eng);
36void RegisterNoReturnFunctionChecker(ExprEngine &Eng);
37void RegisterObjCAtSyncChecker(ExprEngine &Eng);
38void RegisterPointerArithChecker(ExprEngine &Eng);
39void RegisterPointerSubChecker(ExprEngine &Eng);
40void RegisterReturnPointerRangeChecker(ExprEngine &Eng);
41void RegisterReturnUndefChecker(ExprEngine &Eng);
42void RegisterStackAddrLeakChecker(ExprEngine &Eng);
43void RegisterUndefBranchChecker(ExprEngine &Eng);
44void RegisterUndefCapturedBlockVarChecker(ExprEngine &Eng);
45void RegisterUndefResultChecker(ExprEngine &Eng);
46void RegisterUndefinedArraySubscriptChecker(ExprEngine &Eng);
47void RegisterUndefinedAssignmentChecker(ExprEngine &Eng);
48void RegisterVLASizeChecker(ExprEngine &Eng);
Argyrios Kyrtzidisd7a31ba2011-01-11 19:45:25 +000049void registerObjCSelfInitChecker(ExprEngine &Eng);
Argyrios Kyrtzidisd2592a32010-12-22 18:53:44 +000050
51// API checks.
52void RegisterMacOSXAPIChecker(ExprEngine &Eng);
53void RegisterOSAtomicChecker(ExprEngine &Eng);
54void RegisterUnixAPIChecker(ExprEngine &Eng);
55
56} // end GR namespace
57
58} // end clang namespace
59
60#endif