|  | Commit message (Collapse) | Author | Age | Files | Lines | 
|---|
| | 
| 
| 
| 
| 
| 
| 
| | ASTContext&, PathDiagnosticClient*, can be provided by an external source.
Split BugReporter into BugReporter and GRBugReporter so checkers not based on GRExprEngine can still use the BugReporter mechanism.
llvm-svn: 53048 | 
| | 
| 
| 
| 
| 
| 
| 
| | creator.
This allows an optimization in AnalysisConsumer where the same LiveVariables information is used between multiple analyses.
llvm-svn: 53046 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | 1) Check if a dead store appears as a subexpression.  For such cases, we emit
   a verbose diagnostic so that users aren't confused.  This addresses:
   
   <rdar://problem/5968508> checker gives misleading report for dead store in loop
   
2) Don't emit a dead store warning when assigning a null value to a pointer.
   This is a common form of defensive programming.  We may wish to make
   this an option to the the checker one day.
   
   This addresses the feature request in the following email:
   
   http://lists.cs.uiuc.edu/pipermail/cfe-dev/2008-June/001978.html
llvm-svn: 52555 | 
| | 
| 
| 
| 
| 
| 
| | have complex RValues yet, so this logic is only fully implemented when __imag__
and __real__ are used on non-complex types.
llvm-svn: 52501 | 
| | 
| 
| 
| 
| 
| | distinguishes between the cases when we just evaluated the transfer function of a Stmt* (PostStmt) or performed a load (PostLoad).  This solves a caching bug observed in a recent bug report.
llvm-svn: 52443 | 
| | 
| 
| 
| 
| 
| | Patch by David Chisnall!
llvm-svn: 52422 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | EvalLoad should bind to the UnaryOperator*, not its subexpression.
Added test case to exercise this fix when checking for uses of uninitialized values.
Patch by Zhongxing Xu!
llvm-svn: 51377 | 
| | 
| 
| 
| | llvm-svn: 51214 | 
| | 
| 
| 
| | llvm-svn: 51213 | 
| | 
| 
| 
| | llvm-svn: 51212 | 
| | 
| 
| 
| 
| 
| | to use IsLValType when conjuring symbols for return values (this fixes a bug with an assertion firing in the analyzer when two qualified objective-c types were compared).
llvm-svn: 50924 | 
| | 
| 
| 
| | llvm-svn: 50579 | 
| | 
| 
| 
| 
| 
| | treat these as panic functions.
llvm-svn: 50535 | 
| | 
| 
| 
| | llvm-svn: 50530 | 
| | 
| 
| 
| 
| 
| | should catch this one easily.
llvm-svn: 50526 | 
| | 
| 
| 
| 
| 
| | temporaries.
llvm-svn: 50502 | 
| | 
| 
| 
| | llvm-svn: 50500 | 
| | 
| 
| 
| 
| 
| | sizeof of a ObjCInterfaceType.
llvm-svn: 50499 | 
| | 
| 
| 
| | llvm-svn: 50497 | 
| | 
| 
| 
| | llvm-svn: 50494 | 
| | 
| 
| 
| | llvm-svn: 50493 | 
| | 
| 
| 
| 
| 
| | Add db_error as panic function.
llvm-svn: 50489 | 
| | 
| 
| 
| | llvm-svn: 50466 | 
| | 
| 
| 
| | llvm-svn: 50453 | 
| | 
| 
| 
| 
| 
| 
| 
| | from other Lvalues.
This removes the failure in null-deref-ps.c (test suite).
llvm-svn: 50449 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | EvalStore/EvalLoad to handle all loads/stores from symbolic memory, allowing us
to do checks for null dereferences, etc., at any arbitrary load/store (these
were missed checks before). This also resulted in some major cleanups, some
conceptual, and others just in the structure of the code.
This temporarily introduces a regression in the test suite (null-deref-ps.c)
before I add a new LVal type for structure fields.
llvm-svn: 50443 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | Implemented support for better localized leaks in the CF reference count checker.
Now leaks should be flagged close to where they occur.
This should implement the desired functionality in <rdar://problem/5879592>, although the diagnostics still need to be improved.
llvm-svn: 50241 | 
| | 
| 
| 
| 
| 
| | symbols.
llvm-svn: 50233 | 
| | 
| 
| 
| 
| 
| | function logic to act when symbols become dead.
llvm-svn: 50221 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | Problem:
In the recently refactored VisitDeref (which processes dereferences), we
were incorrectly skipping the node just generated for the subexpression
of the dereference.  This was a horrible regression.
llvm-svn: 50176 | 
| | 
| 
| 
| 
| 
| | always be taken even if it was not feasible.
llvm-svn: 50132 | 
| | 
| 
| 
| | llvm-svn: 50119 | 
| | 
| 
| 
| | llvm-svn: 50112 | 
| | 
| 
| 
| | llvm-svn: 50109 | 
| | 
| 
| 
| 
| 
| | integers, allowing us to track lvals when they are casted back to pointers.
llvm-svn: 50108 | 
| | 
| 
| 
| | llvm-svn: 50091 | 
| | 
| 
| 
| | llvm-svn: 50089 | 
| | 
| 
| 
| | llvm-svn: 50083 | 
| | 
| 
| 
| 
| 
| | where "x" is NULL.
llvm-svn: 50071 | 
| | 
| 
| 
| 
| 
| | compiler warning introduced by a recent patch of mine.
llvm-svn: 49917 | 
| | 
| 
| 
| | llvm-svn: 49914 | 
| | 
| 
| 
| 
| 
| 
| 
| | from registered BugTypes.  This helps with debugging.
Add detection of NULL values in ref count checker; this suppresses false positives.
llvm-svn: 49912 | 
| | 
| 
| 
| 
| 
| | the checker-specific logic of symbolic assumptions.
llvm-svn: 49910 | 
| | 
| 
| 
| 
| 
| | object.
llvm-svn: 49826 | 
| | 
| 
| 
| 
| 
| | represent possible stores to "Unknown."
llvm-svn: 49811 | 
| | 
| 
| 
| | llvm-svn: 49804 | 
| | 
| 
| 
| 
| 
| | to the plug-in GRTransferFuncs object.
llvm-svn: 49801 | 
| | 
| 
| 
| 
| 
| 
| 
| | to start logically organizing them.
Added initial plug-in transfer function support for Objective-C message expressions.
llvm-svn: 49752 | 
| | 
| 
| 
| 
| 
| 
| 
| | VarDecl::isBlockVarDecl() and VarDecl::isFileVarDecl().
This is a fairly mechanical/large change. As a result, I avoided making any changes/simplifications that weren't directly related. I did break two Analysis tests. I also have a couple FIXME's in UninitializedValues.cpp. Ted, can you take a look? If the bug isn't obvious, I am happy to dig in and fix it (since I broke it).
llvm-svn: 49748 | 
| | 
| 
| 
| 
| 
| | use-after-release errors.  Added test case.
llvm-svn: 49509 |