clang-1/lib/StaticAnalyzer/Core
Jordan Rose 200fa2e70d [analyzer] Don't attempt to devirtualize calls to base class destructors.
CXXDestructorCall now has a flag for when it is a base destructor call.
Other kinds of destructor calls (locals, fields, temporaries, and 'delete')
all behave as "whole-object" destructors and do not behave differently
from one another (specifically, in these cases we /should/ try to
devirtualize a call to a virtual destructor).

This was causing crashes in both our internal buildbot, the crash still
being tracked in PR13765, and some of the crashes being tracked in PR13763,
due to a assertion failure. (The behavior under -Asserts happened to be
correct anyway.)

Adding this knowledge also allows our DynamicTypePropagation checker to do
a bit less work; the special rules about virtual method calls during a
destructor only require extra handling during base destructors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163348 91177308-0d34-0410-b5e6-96231b3b80d8
2012-09-06 20:37:08 +00:00
..
APSIntType.cpp [analyzer] Rework both constraint managers to handle mixed-type comparisons. 2012-05-08 03:27:16 +00:00
AnalysisManager.cpp [analyzer] Always include destructors in the analysis CFG. 2012-09-05 22:55:23 +00:00
AnalyzerOptions.cpp [analyzer] Always include destructors in the analysis CFG. 2012-09-05 22:55:23 +00:00
BasicValueFactory.cpp [analyzer] Disallow creation of int vals with explicit bit width / signedness. 2012-09-01 17:39:24 +00:00
BlockCounter.cpp Cleanup various declarations of 'Stmt*' to be 'Stmt *', etc. in libAnalyzer and libStaticAnalyzer[*]. It was highly inconsistent, and very ugly to look at. 2011-08-12 23:37:29 +00:00
BugReporter.cpp [analyzer] Ensure that PathDiagnostics profile the same regardless of path. 2012-08-31 00:36:26 +00:00
BugReporterVisitors.cpp [analyzer] Enhance the member expr tracking to account for references. 2012-09-05 23:41:54 +00:00
CMakeLists.txt Split library clangRewrite into clangRewriteCore and clangRewriteFrontend. 2012-09-01 05:09:24 +00:00
CallEvent.cpp [analyzer] Don't attempt to devirtualize calls to base class destructors. 2012-09-06 20:37:08 +00:00
Checker.cpp Reapply r149311 which I reverted by mistake. 2012-01-31 02:23:28 +00:00
CheckerContext.cpp Unify naming of LangOptions variable/get function across the Clang stack (Lex to AST). 2012-03-11 07:00:24 +00:00
CheckerHelpers.cpp Split 'include/clang/StaticAnalyzer' into 'include/clang/StaticAnalyzer/Core' and 'include/clang/StaticAnalyzer/Checkers'. 2011-02-10 01:03:03 +00:00
CheckerManager.cpp [analyzer] Use the common evalBind infrastructure for initializers. 2012-08-25 01:06:23 +00:00
CheckerRegistry.cpp Revert my patches which removed Diagnostic.h includes by moving some operator overloads out of line. 2012-02-07 22:29:24 +00:00
CoreEngine.cpp [analyzer] Refactor the logic that determines if a functions should be 2012-08-30 23:42:02 +00:00
Environment.cpp Dont cast away const needlessly. Found by gcc48 -Wcast-qual. 2012-09-06 15:59:27 +00:00
ExplodedGraph.cpp [analyzer] Rename CallEvent::mayBeInlined to CallEvent::isCallStmt. 2012-08-28 00:50:38 +00:00
ExprEngine.cpp [analyzer] Don't attempt to devirtualize calls to base class destructors. 2012-09-06 20:37:08 +00:00
ExprEngineC.cpp [analyzer] Fix a crash PR13762. 2012-09-05 22:31:58 +00:00
ExprEngineCXX.cpp [analyzer] Don't attempt to devirtualize calls to base class destructors. 2012-09-06 20:37:08 +00:00
ExprEngineCallAndReturn.cpp [analyzer] Silence unused variable warnings in NDEBUG builds. 2012-09-01 19:15:13 +00:00
ExprEngineObjC.cpp Rename 'currentX' to 'currX' throughout analyzer and libAnalysis. 2012-08-22 06:26:15 +00:00
FunctionSummary.cpp [analyzer] Record the basic blocks covered by the analyzes run. 2012-04-03 02:05:47 +00:00
HTMLDiagnostics.cpp Split library clangRewrite into clangRewriteCore and clangRewriteFrontend. 2012-09-01 05:09:24 +00:00
Makefile [analyzer] Move the files in lib/StaticAnalyzer to lib/StaticAnalyzer/Core. 2011-02-08 22:30:36 +00:00
MemRegion.cpp Dont cast away const needlessly. Found by gcc48 -Wcast-qual. 2012-09-06 15:59:27 +00:00
PathDiagnostic.cpp [analyzer] Ensure that PathDiagnostics profile the same regardless of path. 2012-08-31 00:36:26 +00:00
PlistDiagnostics.cpp [analyzer] Ensure that PathDiagnostics profile the same regardless of path. 2012-08-31 00:36:26 +00:00
ProgramState.cpp Rename 'unbindLoc()' (in ProgramState) and 'Remove()' to 2012-08-22 06:37:46 +00:00
RangeConstraintManager.cpp Despite me asking Jordan to do r162313, revert it. We can provide 2012-08-22 19:58:20 +00:00
RegionStore.cpp Dont cast away const needlessly. Found by gcc48 -Wcast-qual. 2012-09-06 15:59:27 +00:00
SValBuilder.cpp Rename 'getConjuredSymbol*' to 'conjureSymbol*'. 2012-08-22 06:26:06 +00:00
SVals.cpp [analyzer] Don't strip CXXBaseObjectRegions when checking dynamic_casts. 2012-08-13 22:11:34 +00:00
SimpleConstraintManager.cpp Despite me asking Jordan to do r162313, revert it. We can provide 2012-08-22 19:58:20 +00:00
SimpleConstraintManager.h [analyzer] Rework both constraint managers to handle mixed-type comparisons. 2012-05-08 03:27:16 +00:00
SimpleSValBuilder.cpp [analyzer] Clean up a couple uses of getPointeeType(). 2012-09-05 17:11:22 +00:00
Store.cpp [analyzer] A CXXBaseObjectRegion should correspond to a DIRECT base. 2012-08-09 21:24:02 +00:00
SubEngine.cpp Unweaken vtables as per http://llvm.org/docs/CodingStandards.html#ll_virtual_anch 2011-12-20 02:48:34 +00:00
SymbolManager.cpp Revert "[analyzer] Treat all struct values as regions (even rvalues)." 2012-09-05 17:11:15 +00:00
TextPathDiagnostics.cpp [analyzer] Ensure that PathDiagnostics profile the same regardless of path. 2012-08-31 00:36:26 +00:00