blob: d7ad99ffc22680ff895f8514497140539d48e5c4 [file] [log] [blame]
Argyrios Kyrtzidis1696f502010-12-22 18:53:44 +00001//=-- ExprEngineExperimentalChecks.h ------------------------------*- C++ -*-=
Ted Kremenekaedb7432009-11-13 01:15:47 +00002//
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 experimental
Argyrios Kyrtzidis1696f502010-12-22 18:53:44 +000011// checks in ExprEngine.
Ted Kremenekaedb7432009-11-13 01:15:47 +000012//
13//===----------------------------------------------------------------------===//
14
Argyrios Kyrtzidis1696f502010-12-22 18:53:44 +000015#include "ExprEngineInternalChecks.h"
16#include "ExprEngineExperimentalChecks.h"
Argyrios Kyrtzidis8d602a82010-12-22 18:51:49 +000017#include "clang/GR/Checkers/LocalCheckers.h"
Ted Kremenekaedb7432009-11-13 01:15:47 +000018
19using namespace clang;
Argyrios Kyrtzidisca08fba2010-12-22 18:53:20 +000020using namespace GR;
Ted Kremenekaedb7432009-11-13 01:15:47 +000021
Argyrios Kyrtzidis1696f502010-12-22 18:53:44 +000022void GR::RegisterExperimentalChecks(ExprEngine &Eng) {
Ted Kremenek4ef13f82009-11-13 18:46:29 +000023 // These are checks that never belong as internal checks
Argyrios Kyrtzidis1696f502010-12-22 18:53:44 +000024 // within ExprEngine.
Jordy Rose134a2362010-07-06 23:11:01 +000025 RegisterCStringChecker(Eng);
Zhongxing Xu271c9c72010-10-10 05:45:30 +000026 RegisterChrootChecker(Eng);
Tom Carecba9f512010-07-23 23:04:53 +000027 RegisterMallocChecker(Eng);
28 RegisterPthreadLockChecker(Eng);
29 RegisterStreamChecker(Eng);
30 RegisterUnreachableCodeChecker(Eng);
Ted Kremenekaedb7432009-11-13 01:15:47 +000031}
32
Argyrios Kyrtzidis1696f502010-12-22 18:53:44 +000033void GR::RegisterExperimentalInternalChecks(ExprEngine &Eng) {
Ted Kremenek4ef13f82009-11-13 18:46:29 +000034 // These are internal checks that should eventually migrate to
35 // RegisterInternalChecks() once they have been further tested.
36
37 // Note that this must be registered after ReturnStackAddresEngsChecker.
38 RegisterReturnPointerRangeChecker(Eng);
Ted Kremenekd3542782009-11-21 17:55:24 +000039
Ted Kremenek4ef13f82009-11-13 18:46:29 +000040 RegisterArrayBoundChecker(Eng);
Tom Carecba9f512010-07-23 23:04:53 +000041 RegisterCastSizeChecker(Eng);
42 RegisterCastToStructChecker(Eng);
43 RegisterFixedAddressChecker(Eng);
44 RegisterPointerArithChecker(Eng);
45 RegisterPointerSubChecker(Eng);
Ted Kremenek4ef13f82009-11-13 18:46:29 +000046}