llvm-project/clang/lib/StaticAnalyzer/Checkers
Artem Dergachev e8ba3ec453 [analyzer] Fix a crash during C++17 aggregate construction of base objects.
Since C++17, classes that have base classes can potentially be initialized as
aggregates. Trying to construct such objects through brace initialization was
causing the analyzer to crash when the base class has a non-trivial constructor,
while figuring target region for the base class constructor, because the parent
stack frame didn't contain the constructor of the subclass, because there is
no constructor for subclass, merely aggregate initialization.

This patch avoids the crash, but doesn't provide the actually correct region
for the constructor, which still remains to be fixed. Instead, construction
goes into a fake temporary region which would be immediately discarded. Similar
extremely conservative approach is used for other cases in which the logic for
finding the target region is not yet implemented, including aggregate
initialization with fields instead of base-regions (which is not C++17-specific
but also never worked, just didn't crash).

Differential revision: https://reviews.llvm.org/D40841

rdar://problem/35441058

llvm-svn: 321128
2017-12-20 00:40:38 +00:00
..
MPI-Checker [analyzer] Enforce super-region classes for various memory regions. 2017-04-13 09:56:07 +00:00
AllocationDiagnostics.cpp
AllocationDiagnostics.h
AnalysisOrderChecker.cpp [analyzer] When creating a temporary object, properly copy the value into it. 2017-03-28 15:43:26 +00:00
AnalyzerStatsChecker.cpp
ArrayBoundChecker.cpp
ArrayBoundCheckerV2.cpp Add NDEBUG checks around LLVM_DUMP_METHOD functions for Wunused-function warnings. 2017-11-16 03:18:09 +00:00
BasicObjCFoundationChecks.cpp Suppress all uses of LLVM_END_WITH_NULL. NFC. 2017-05-09 19:31:30 +00:00
BlockInCriticalSectionChecker.cpp [analyzer] lock_guard and unique_lock extension for BlockInCriticalSection checker 2017-10-30 10:09:55 +00:00
BoolAssignmentChecker.cpp
BuiltinFunctionChecker.cpp [analyzer] Do not continue to analyze a path if the constraints contradict with builtin assume 2017-06-22 10:09:40 +00:00
CMakeLists.txt [Analyzer] Assume that CFBooleanRef const globals are non-null 2017-10-13 00:51:41 +00:00
CStringChecker.cpp [analyzer] pr34779: CStringChecker: Accept non-standard headers. 2017-11-07 10:51:15 +00:00
CStringSyntaxChecker.cpp [CSA] [NFC] Move AnalysisContext.h to AnalysisDeclContext.h 2017-09-06 21:45:03 +00:00
CXXSelfAssignmentChecker.cpp [analyzer] Add LocationContext as a parameter to checkRegionChanges 2017-01-13 00:50:57 +00:00
CallAndMessageChecker.cpp [analyzer] In getSVal() API, disable auto-detection of void type as char type. 2017-12-12 02:27:55 +00:00
CastSizeChecker.cpp [analyzer] pr31226: Disable CastSizeChecker in C++ because it's not quite ready. 2016-12-07 16:12:26 +00:00
CastToStructChecker.cpp [analyzer] Fix crashes in CastToStruct checker for undefined structs 2017-03-07 19:20:48 +00:00
CheckObjCDealloc.cpp Revert "[analyzer] Re-apply r283093 "Add extra notes to ObjCDeallocChecker"" 2016-10-16 00:30:08 +00:00
CheckObjCInstMethSignature.cpp
CheckSecuritySyntaxOnly.cpp [CSA] [NFC] Move AnalysisContext.h to AnalysisDeclContext.h 2017-09-06 21:45:03 +00:00
CheckSizeofPointer.cpp
CheckerDocumentation.cpp [analyzer] Add LocationContext as a parameter to checkRegionChanges 2017-01-13 00:50:57 +00:00
ChrootChecker.cpp [NFC] Header cleanup 2016-07-18 19:02:11 +00:00
ClangCheckers.cpp [analyzer] Move Checkers.inc to clang/include/... 2016-04-28 01:09:09 +00:00
ClangSACheckers.h [analyzer] Move Checkers.inc to clang/include/... 2016-04-28 01:09:09 +00:00
CloneChecker.cpp [analyzer] Increase minimum complexity filter of the CloneChecker. 2017-09-04 05:56:36 +00:00
ConversionChecker.cpp [Analyzer] Clarify error messages for undefined result 2017-10-11 14:49:35 +00:00
DeadStoresChecker.cpp Added LLVM_FALLTHROUGH to address warning: this statement may fall through. NFC. 2017-06-03 06:26:27 +00:00
DebugCheckers.cpp [analyzer] Make issue hash related tests more concise 2017-10-30 12:02:23 +00:00
DeleteWithNonVirtualDtorChecker.cpp [analyzer] Add new delete with non-virtual destructor check 2017-09-22 10:16:33 +00:00
DereferenceChecker.cpp [analyzer] Don't dereference the array value when binding it to a reference. 2017-01-12 18:00:03 +00:00
DirectIvarAssignment.cpp
DivZeroChecker.cpp
DynamicTypeChecker.cpp Migrate PathDiagnosticPiece to std::shared_ptr 2017-01-05 17:26:53 +00:00
DynamicTypePropagation.cpp [analyzer] Fix a crash during C++17 aggregate construction of base objects. 2017-12-20 00:40:38 +00:00
ExprInspectionChecker.cpp [analyzer] Make issue hash related tests more concise 2017-10-30 12:02:23 +00:00
FixedAddressChecker.cpp
GTestChecker.cpp [analyzer] Update GTestChecker to tighten API detection 2016-12-22 17:52:57 +00:00
GenericTaintChecker.cpp [analyzer] In getSVal() API, disable auto-detection of void type as char type. 2017-12-12 02:27:55 +00:00
IdenticalExprChecker.cpp [c++20] P0515R3: Parsing support and basic AST construction for operator <=>. 2017-12-14 15:16:18 +00:00
InterCheckerAPI.h
IteratorChecker.cpp [analyzer] Initial commit for the upcoming refactoring of the IteratorChecker. 2017-05-29 15:03:20 +00:00
IvarInvalidationChecker.cpp Remove redundant conditions of the form (A || (!A && B)) -> (A || B) 2016-04-11 08:26:13 +00:00
LLVMConventionsChecker.cpp
LocalizationChecker.cpp [analyzer] Add annotation for functions taking user-facing strings 2017-07-14 10:24:36 +00:00
MacOSKeychainAPIChecker.cpp [analyzer] Fix false positives in Keychain API checker 2017-01-13 00:50:41 +00:00
MacOSXAPIChecker.cpp [analyzer] Fix MacOSXAPIChecker fp with static locals seen from nested blocks. 2017-01-25 10:21:45 +00:00
MallocChecker.cpp [analyzer] Fix memory error bug category capitalization. 2017-05-03 11:47:13 +00:00
MallocOverflowSecurityChecker.cpp [analyzer] Older version of GCC 4.7 crash on lambdas in default arguments. 2016-07-09 12:16:58 +00:00
MallocSizeofChecker.cpp
MisusedMovedObjectChecker.cpp [analyzer] MisusedMovedObjectChecker: More precise warning message 2017-10-28 23:24:00 +00:00
NSAutoreleasePoolChecker.cpp
NSErrorChecker.cpp Use more ArrayRefs 2016-06-24 04:05:48 +00:00
NoReturnFunctionChecker.cpp Suppress all uses of LLVM_END_WITH_NULL. NFC. 2017-05-09 19:31:30 +00:00
NonNullParamChecker.cpp Spelling mistakes in comments. NFCI. (PR27635) 2017-03-30 14:13:19 +00:00
NonnullGlobalConstantsChecker.cpp [Analyzer] Assume that CFBooleanRef const globals are non-null 2017-10-13 00:51:41 +00:00
NullabilityChecker.cpp [analyzer] Nullability: fix notes around synthesized ObjC property accessors. 2017-06-05 12:40:03 +00:00
NumberObjectConversionChecker.cpp [analyzer] NumberObjectConversion: Workaround for a linker error with modules. 2016-11-15 22:22:57 +00:00
ObjCAtSyncChecker.cpp
ObjCContainersASTChecker.cpp [CSA] [NFC] Move AnalysisContext.h to AnalysisDeclContext.h 2017-09-06 21:45:03 +00:00
ObjCContainersChecker.cpp
ObjCMissingSuperCallChecker.cpp
ObjCPropertyChecker.cpp [Analyzer] Fix crash in ObjCPropertyChecker on protocol property 2017-03-01 01:47:37 +00:00
ObjCSelfInitChecker.cpp
ObjCSuperDeallocChecker.cpp [clang] Remove redundant return [NFC] 2017-11-13 19:29:31 +00:00
ObjCUnusedIVarsChecker.cpp
PaddingChecker.cpp StaticAnalyzer: Report found fields order in PaddingChecker 2016-08-15 20:16:13 +00:00
PointerArithChecker.cpp [NFC] Header cleanup 2016-07-18 19:02:11 +00:00
PointerSubChecker.cpp
PthreadLockChecker.cpp [analyzer] PthreadLockChecker: Add printState() method for self-debugging. 2017-10-10 11:49:09 +00:00
RetainCountChecker.cpp [analyzer] Teach RetainCountChecker about CoreMedia APIs 2017-11-25 14:57:42 +00:00
ReturnPointerRangeChecker.cpp
ReturnUndefChecker.cpp
SelectorExtras.h Use clang++-3.5 compatible initializer_list constructor 2017-05-10 13:22:11 +00:00
SimpleStreamChecker.cpp Apply clang-tidy's misc-move-constructor-init throughout Clang. 2016-05-27 14:27:13 +00:00
StackAddrEscapeChecker.cpp [analyzer] StackAddrEscape: For now, disable the new async escape checks. 2017-12-12 02:59:09 +00:00
StdLibraryFunctionsChecker.cpp [analyzer] Avoid an allocation in Std C function modelling 2017-05-12 06:53:55 +00:00
StreamChecker.cpp [NFC] Header cleanup 2016-07-18 19:02:11 +00:00
TaintTesterChecker.cpp
TestAfterDivZeroChecker.cpp Migrate PathDiagnosticPiece to std::shared_ptr 2017-01-05 17:26:53 +00:00
TraversalChecker.cpp [analyzer] Add checker callback for beginning of function. 2016-02-19 01:35:10 +00:00
UndefBranchChecker.cpp Apply clang-tidy's misc-move-constructor-init throughout Clang. 2016-05-27 14:27:13 +00:00
UndefCapturedBlockVarChecker.cpp
UndefResultChecker.cpp [analyzer] Left shifting a negative value is undefined 2017-10-30 17:06:42 +00:00
UndefinedArraySubscriptChecker.cpp
UndefinedAssignmentChecker.cpp [analyzer] Fix false negative on post-increment of uninitialized variable. 2017-11-30 09:18:35 +00:00
UnixAPIChecker.cpp [analyzer] Move zero-size allocation checks to optin.portability. 2017-06-27 11:14:39 +00:00
UnreachableCodeChecker.cpp [StaticAnalyzer] Fix false positives for unreachable code in macros. 2017-08-02 08:26:56 +00:00
VLASizeChecker.cpp
ValistChecker.cpp [analyzer] Fix memory error bug category capitalization. 2017-05-03 11:47:13 +00:00
VforkChecker.cpp
VirtualCallChecker.cpp [analyzer] Fix an assertion fail in VirtualCallChecker 2017-09-21 08:18:59 +00:00