blob: aa2f99b1a1144c1d6ad8f8c8a286d95e0f06961b [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
20namespace GR {
21
22class ExprEngine;
23
24// Foundational checks that handle basic semantics.
25void RegisterAdjustedReturnValueChecker(ExprEngine &Eng);
26void RegisterArrayBoundChecker(ExprEngine &Eng);
27void RegisterAttrNonNullChecker(ExprEngine &Eng);
28void RegisterBuiltinFunctionChecker(ExprEngine &Eng);
29void RegisterCallAndMessageChecker(ExprEngine &Eng);
30void RegisterCastToStructChecker(ExprEngine &Eng);
31void RegisterCastSizeChecker(ExprEngine &Eng);
32void RegisterDereferenceChecker(ExprEngine &Eng);
33void RegisterDivZeroChecker(ExprEngine &Eng);
34void RegisterFixedAddressChecker(ExprEngine &Eng);
35void RegisterNoReturnFunctionChecker(ExprEngine &Eng);
36void RegisterObjCAtSyncChecker(ExprEngine &Eng);
37void RegisterPointerArithChecker(ExprEngine &Eng);
38void RegisterPointerSubChecker(ExprEngine &Eng);
39void RegisterReturnPointerRangeChecker(ExprEngine &Eng);
40void RegisterReturnUndefChecker(ExprEngine &Eng);
41void RegisterStackAddrLeakChecker(ExprEngine &Eng);
42void RegisterUndefBranchChecker(ExprEngine &Eng);
43void RegisterUndefCapturedBlockVarChecker(ExprEngine &Eng);
44void RegisterUndefResultChecker(ExprEngine &Eng);
45void RegisterUndefinedArraySubscriptChecker(ExprEngine &Eng);
46void RegisterUndefinedAssignmentChecker(ExprEngine &Eng);
47void RegisterVLASizeChecker(ExprEngine &Eng);
48
49// API checks.
50void RegisterMacOSXAPIChecker(ExprEngine &Eng);
51void RegisterOSAtomicChecker(ExprEngine &Eng);
52void RegisterUnixAPIChecker(ExprEngine &Eng);
53
54} // end GR namespace
55
56} // end clang namespace
57
58#endif