llvm-project/clang/lib/Checker
Ted Kremenek 5f256da834 Rename GRState::getSVal() -> getRawSVal() and getSimplifiedSVal() -> getSVal().
The end result is now we eagarly constant-fold symbols in the analyzer that are perfectly constrained
to be a constant value.  This allows us to recover some path-sensitivity in some cases by lowering
the required level of reasoning power needed to evaluate some expressions.

The net win from this change is that the false positive in PR 8015 is fixed, and we also
find more idempotent operations bugs.

We do, however, regress with the BugReporterVisitors, which need to be modified to understand
this constant folding (and look past it).  This causes some diagnostic regressions in plist-output.m
which will get addressed in a future patch.  plist-output.m is now marked XFAIL, while
plist-output-alternate.m now tests that the plist output is working, but with the suboptimal
diagnostics.  This second test file will eventually be removed.

llvm-svn: 113477
2010-09-09 07:13:00 +00:00
..
AdjustedReturnValueChecker.cpp MemRegion can refer to ASTContext without external help. 2010-08-11 06:10:55 +00:00
AggExprVisitor.cpp Add comments. 2010-08-29 05:16:31 +00:00
AnalysisConsumer.cpp Removed IdempotentOperationChecker from default analysis and returned back to a flag (-analyzer-check-idempotent-operations) 2010-08-06 22:23:07 +00:00
AnalysisManager.cpp Reapply r108617. 2010-07-19 01:31:21 +00:00
ArrayBoundChecker.cpp MemRegion can refer to ASTContext without external help. 2010-08-11 06:10:55 +00:00
AttrNonNullChecker.cpp If a nonnull argument evaluates to UnknownVal, don't warn (and don't crash). 2010-06-21 20:08:28 +00:00
BasicConstraintManager.cpp Fold additive constants, and support comparsions of the form $sym+const1 <> const2 2010-06-18 22:49:11 +00:00
BasicObjCFoundationChecks.cpp Remove dead code, caught by unused function warnings. 2010-08-15 01:15:58 +00:00
BasicObjCFoundationChecks.h Improve NULL-checking for CFRetain/CFRelease. We now remember that the argument was non-NULL, and we report where the null assumption came from (like AttrNonNullChecker already did). 2010-07-06 02:34:42 +00:00
BasicStore.cpp De-memberify the VarDecl and FunctionDecl StorageClass enums. 2010-08-26 03:08:43 +00:00
BasicValueFactory.cpp GCC didn't care for my attempt at API compatibility, so brute-force everything 2010-08-25 11:45:40 +00:00
BugReporter.cpp GCC didn't care for my attempt at API compatibility, so brute-force everything 2010-08-25 11:45:40 +00:00
BugReporterVisitors.cpp Reapply 112850 and 112839 with a constructor for the BinaryOperatorData struct. Clang would zero out the enum and pointer in the struct in some conditions, but GCC would never zero out the values. 2010-09-02 23:30:22 +00:00
BuiltinFunctionChecker.cpp Add a new symbol type, SymbolExtent, to represent the extents of memory regions that may not be known at compile-time (such as those created by malloc). This replaces the old setExtent/getExtent API on Store, which used the GRState's GDM to store SVals. 2010-07-04 00:00:41 +00:00
CFRefCount.cpp Remove dead code. 2010-08-17 22:05:33 +00:00
CMakeLists.txt Extracted out some useful common functions in IdempotentOperationChecker to their own CheckerHelpers file. 2010-07-27 23:26:07 +00:00
CStringChecker.cpp GCC didn't care for my attempt at API compatibility, so brute-force everything 2010-08-25 11:45:40 +00:00
CallAndMessageChecker.cpp MemRegion can refer to ASTContext without external help. 2010-08-11 06:10:55 +00:00
CastSizeChecker.cpp Don't assert in CastSizeChecker when the casted-to pointee is an incomplete type. Fixes PR 8050. 2010-09-01 20:35:38 +00:00
CastToStructChecker.cpp Introduce Type::isStructureOrClassType(), which does the obvious 2010-04-26 21:31:17 +00:00
CheckDeadStores.cpp GCC didn't care for my attempt at API compatibility, so brute-force everything 2010-08-25 11:45:40 +00:00
CheckObjCDealloc.cpp Add clang support for IBOutletCollection. 2010-05-19 17:38:06 +00:00
CheckObjCInstMethSignature.cpp Add raw_ostream operators to NamedDecl for convenience. Switch over all users of getNameAsString on a stream. 2010-04-17 09:33:03 +00:00
CheckSecuritySyntaxOnly.cpp GCC didn't care for my attempt at API compatibility, so brute-force everything 2010-08-25 11:45:40 +00:00
CheckSizeofPointer.cpp Move 'LocalCheckers.h' to the 'Checkers' subdirectory. 2010-01-26 22:59:55 +00:00
Checker.cpp Split libAnalysis into two libraries: libAnalysis and libChecker. 2010-01-25 04:41:41 +00:00
CheckerHelpers.cpp Zap unused UnaryOperator::OffsetOf. 2010-08-13 01:36:11 +00:00
CocoaConventions.cpp Correctly handle 'Class<...>' when examining Cocoa conventions in the static analyzer. Fixes a crash reported in <rdar://problem/8272168>. Patch by Henry Mason! 2010-08-05 00:19:24 +00:00
DereferenceChecker.cpp Checker: random include cleanup. 2010-03-27 21:19:47 +00:00
DivZeroChecker.cpp GCC didn't care for my attempt at API compatibility, so brute-force everything 2010-08-25 11:45:40 +00:00
Environment.cpp Add optional record of "location" SVals in the environment. When we analyzing loads/stores, we lose the location SVal, which makes it difficult to recover in some cases (e.g., for post diagnostics). This is prep for pending changes to GRExprEngine. 2010-09-03 01:07:02 +00:00
ExplodedGraph.cpp Split libAnalysis into two libraries: libAnalysis and libChecker. 2010-01-25 04:41:41 +00:00
FixedAddressChecker.cpp GCC didn't care for my attempt at API compatibility, so brute-force everything 2010-08-25 11:45:40 +00:00
FlatStore.cpp - Allow making ElementRegions with complex offsets (expressions or symbols) for the purpose of bounds-checking. 2010-08-16 01:15:17 +00:00
FrontendActions.cpp Break Frontend's dependency on Rewrite, Checker and CodeGen in shared library configuration 2010-06-15 17:48:49 +00:00
GRBlockCounter.cpp Since we now may have basicblocks with the same block is in different function, 2010-03-23 05:05:02 +00:00
GRCXXExprEngine.cpp Improve comments. 2010-08-24 04:26:55 +00:00
GRCoreEngine.cpp More PCH -> AST renaming. 2010-08-18 23:57:06 +00:00
GRExprEngine.cpp Rename GRState::getSVal() -> getRawSVal() and getSimplifiedSVal() -> getSVal(). 2010-09-09 07:13:00 +00:00
GRExprEngineExperimentalChecks.cpp Added an path-sensitive unreachable code checker to the experimental analyzer checks. 2010-07-23 23:04:53 +00:00
GRExprEngineExperimentalChecks.h Removed IdempotentOperationChecker from default analysis and returned back to a flag (-analyzer-check-idempotent-operations) 2010-08-06 22:23:07 +00:00
GRExprEngineInternalChecks.h Removed IdempotentOperationChecker from default analysis and returned back to a flag (-analyzer-check-idempotent-operations) 2010-08-06 22:23:07 +00:00
GRState.cpp Rename GRState::getSVal() -> getRawSVal() and getSimplifiedSVal() -> getSVal(). 2010-09-09 07:13:00 +00:00
HTMLDiagnostics.cpp llvm::errs() is non-buffered, so it doesn't need to be flushed. 2010-06-28 15:56:07 +00:00
IdempotentOperationChecker.cpp Rename GRState::getSVal() -> getRawSVal() and getSimplifiedSVal() -> getSVal(). 2010-09-09 07:13:00 +00:00
LLVMConventionsChecker.cpp Remove dead code, caught by unused function warnings. 2010-08-15 01:15:58 +00:00
MacOSXAPIChecker.cpp Checker: random include cleanup. 2010-03-27 21:19:47 +00:00
Makefile BUILD_ARCHIVE is the default for libraries, no need to set it. 2010-07-18 00:14:47 +00:00
MallocChecker.cpp "I see dead code". IdempotentOperationChecker::isTruncationExtensionAssignment 2010-09-03 04:34:38 +00:00
ManagerRegistry.cpp Split libAnalysis into two libraries: libAnalysis and libChecker. 2010-01-25 04:41:41 +00:00
MemRegion.cpp MemRegion can refer to ASTContext without external help. 2010-08-11 06:10:55 +00:00
NSAutoreleasePoolChecker.cpp Overhaul the AST representation of Objective-C message send 2010-04-21 00:45:42 +00:00
NSErrorChecker.cpp Add raw_ostream operators to NamedDecl for convenience. Switch over all users of getNameAsString on a stream. 2010-04-17 09:33:03 +00:00
NoReturnFunctionChecker.cpp the big refactoring bits of PR3782. 2010-03-30 20:24:48 +00:00
OSAtomicChecker.cpp MemRegion can refer to ASTContext without external help. 2010-08-11 06:10:55 +00:00
ObjCUnusedIVarsChecker.cpp Add clang support for IBOutletCollection. 2010-05-19 17:38:06 +00:00
PathDiagnostic.cpp Simplify code and remove comment that is no longer relevant. 2010-07-07 12:24:14 +00:00
PlistDiagnostics.cpp Break Frontend's dependency on Rewrite, Checker and CodeGen in shared library configuration 2010-06-15 17:48:49 +00:00
PointerArithChecker.cpp GCC didn't care for my attempt at API compatibility, so brute-force everything 2010-08-25 11:45:40 +00:00
PointerSubChecker.cpp GCC didn't care for my attempt at API compatibility, so brute-force everything 2010-08-25 11:45:40 +00:00
PthreadLockChecker.cpp Revert 95541. 2010-02-08 16:18:51 +00:00
RangeConstraintManager.cpp zap dead ctor 2010-08-26 01:17:33 +00:00
RegionStore.cpp Fixed unused variable warning. 2010-09-02 00:34:30 +00:00
ReturnPointerRangeChecker.cpp MemRegion can refer to ASTContext without external help. 2010-08-11 06:10:55 +00:00
ReturnUndefChecker.cpp Add range of return value expression in ReturnUndefChecker. Patch by Jim Goodnow II! 2010-08-31 01:35:32 +00:00
SVals.cpp GCC didn't care for my attempt at API compatibility, so brute-force everything 2010-08-25 11:45:40 +00:00
SValuator.cpp GCC didn't care for my attempt at API compatibility, so brute-force everything 2010-08-25 11:45:40 +00:00
SimpleConstraintManager.cpp GCC didn't care for my attempt at API compatibility, so brute-force everything 2010-08-25 11:45:40 +00:00
SimpleConstraintManager.h - Allow making ElementRegions with complex offsets (expressions or symbols) for the purpose of bounds-checking. 2010-08-16 01:15:17 +00:00
SimpleSValuator.cpp "I see dead code". IdempotentOperationChecker::isTruncationExtensionAssignment 2010-09-03 04:34:38 +00:00
StackAddrLeakChecker.cpp Detabify. 2010-08-22 01:00:03 +00:00
Store.cpp Don't assert in the analyzer when analyze code does a byte load from a function's address. Fixes PR 8052. 2010-09-01 23:00:46 +00:00
StreamChecker.cpp Fix null pointer dereference in StreamChecker::Fseek (reported in PR 8081) and simplify surrounding checking logic. 2010-09-07 20:45:26 +00:00
SymbolManager.cpp Enabled relaxed LiveVariables analysis in the path-sensitive engine to increase the coverage of bugs. Primarily affects IdempotentOperationChecker. 2010-08-27 22:46:32 +00:00
UndefBranchChecker.cpp Constify all references to Stmt* and CFGBlock* in libChecker. 2010-07-20 06:22:24 +00:00
UndefCapturedBlockVarChecker.cpp Checker: random include cleanup. 2010-03-27 21:19:47 +00:00
UndefResultChecker.cpp Checker: random include cleanup. 2010-03-27 21:19:47 +00:00
UndefinedArraySubscriptChecker.cpp Checker: random include cleanup. 2010-03-27 21:19:47 +00:00
UndefinedAssignmentChecker.cpp For GRExprEngine::EvalBind() (and called visitors), unifiy StoreE and AssignE. Now StoreE (const Stmt*) represents the expression where the store took place, which is the assignment expression if it takes place in an assignment. This removes some conceptual dissidence as well as removes an extra parameter from the Checker::PreVisitBind() visitor. It also improves ranges and source location information in analyzer diagnostics. 2010-09-02 00:56:20 +00:00
UnixAPIChecker.cpp GCC didn't care for my attempt at API compatibility, so brute-force everything 2010-08-25 11:45:40 +00:00
UnreachableCodeChecker.cpp Remove an assertion in UnreachableCodeChecker that can be triggered by bugs in other checkers. 2010-08-27 22:37:31 +00:00
VLASizeChecker.cpp GCC didn't care for my attempt at API compatibility, so brute-force everything 2010-08-25 11:45:40 +00:00
ValueManager.cpp Another metadata symbol change (missed a file) 2010-08-14 20:22:12 +00:00