- Dec 22, 2010
-
-
Argyrios Kyrtzidis authored
[analyzer] Refactoring: Move checkers into lib/GR/Checkers and their own library, libclangGRCheckers llvm-svn: 122422
-
Argyrios Kyrtzidis authored
llvm-svn: 122421
-
Argyrios Kyrtzidis authored
llvm-svn: 122420
-
- Dec 08, 2010
-
-
Francois Pichet authored
llvm-svn: 121298
-
- Dec 04, 2010
-
-
John McCall authored
not actually frequently used, because ImpCastExprToType only creates a node if the types differ. So explicitly create an ICE in the lvalue-to-rvalue conversion code in DefaultFunctionArrayLvalueConversion() as well as several other new places, and consistently deal with the consequences throughout the compiler. In addition, introduce a new cast kind for loading an ObjCProperty l-value, and make sure we emit those nodes whenever an ObjCProperty l-value appears that's not on the LHS of an assignment operator. This breaks a couple of rewriter tests, which I've x-failed until future development occurs on the rewriter. Ted Kremenek kindly contributed the analyzer workarounds in this patch. llvm-svn: 120890
-
- Nov 13, 2010
-
-
Ted Kremenek authored
BlockEdges, BlockEntrances, and BlockExits for the target block value. llvm-svn: 118984
-
Ted Kremenek authored
worklist that could have impacted the evaluation of a block. Fixes <rdar://problem/8663596>. llvm-svn: 118983
-
- Oct 29, 2010
-
-
Ted Kremenek authored
Fixes <rdar://problem/8601243>. llvm-svn: 117635
-
- Sep 18, 2010
- Sep 09, 2010
-
-
Ted Kremenek authored
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
-
Tom Care authored
Simplified reachability checking in IdempotentOperationChecker and added a helper function for path display. - Created private class CFGReachabilityAnalysis, which provides cached reachability lookups in the CFG - Simplified PathWasCompletelyAnalyzed to use the new reachability class - Added getLastRelevantNodes function for future use with path displaying in BugReporter llvm-svn: 113465
-
- Sep 07, 2010
-
-
Tom Care authored
llvm-svn: 113269
-
- Sep 03, 2010
-
-
Chris Lattner authored
should probably be removed if it has no purpose, but I just #if'd it out in case it's usefulIdempotentOperationChecker::isTruncationExtensionAssignment should probably be removed if it has no purpose, but I just #if'd it out in case it's useful llvm-svn: 112949
-
Tom Care authored
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. llvm-svn: 112909
-
- Sep 02, 2010
-
-
Tom Care authored
llvm-svn: 112857
-
Tom Care authored
llvm-svn: 112850
-
Tom Care authored
- SourceRange highlighting is only given for the relevant side of the operator (assignments give both) - Added PostVisitBinaryOperator hook to retrieve the ExplodedNode for an operator - Added a BugReporterVisitor to display the last store to every VarDecl in a Stmt - Changed bug reporting to use the new BugReporterVisitor llvm-svn: 112839
-
- Aug 30, 2010
-
-
Tom Care authored
- Fixed a regression where assigning '0' would be reported - Changed the way self assignments are filtered to allow constant testing - Added a test case for assign ops - Fixed one test case where a function pointer was not considered constant - Fixed test cases relating to 0 assignment llvm-svn: 112501
-
- Aug 28, 2010
- Aug 25, 2010
-
-
John McCall authored
to the new constants. llvm-svn: 112047
-
- Aug 24, 2010
-
-
Tom Care authored
- Added wasReferenced function to PseudoConstantAnalysis to determine if a variable was ever referenced in a function (outside of a self-assignment) - BlockDeclRefExpr referenced variables are now explicitly added to the non-constant list - Remove unnecessary ignore of implicit casts - Generalized parameter self-assign detection to detect deliberate self-assigns of variables to avoid unused variable warnings - Updated test cases with deliberate self-assignments - Fixed bug with C++ references and pseudoconstants - Added test case for C++ references and pseudoconstants llvm-svn: 111965
-
- Aug 23, 2010
-
-
Tom Care authored
- Psuedo -> Pseudo (doh...) - C++ reference support - Added pseudoconstant test case for __block vars - Separated out static local checking from pseudoconstant analysis and generalized to non-local checking - Added missing test cases for storage false positives llvm-svn: 111832
-
- Aug 18, 2010
-
-
Tom Care authored
Added psuedo-constant analysis and integrated it into the false positive reduction stage in IdempotentOperationChecker. - Renamed IdempotentOperationChecker::isConstant to isConstantOrPseudoConstant to better reflect the function - Changed IdempotentOperationChecker::PreVisitBinaryOperator to only run 'CanVary' once on undefined assumptions - Created new PsuedoConstantAnalysis class and added it to AnalysisContext - Changed IdempotentOperationChecker to exploit the new analysis - Updated tests with psuedo-constants - Added check to IdempotentOperationChecker to see if a Decl is const qualified llvm-svn: 111426
-
- Aug 16, 2010
-
-
Tom Care authored
llvm-svn: 111190
-
- Aug 13, 2010
-
-
Eli Friedman authored
llvm-svn: 110996
-
Tom Care authored
- Unfinished analysis may still report valid warnings if the path was completely analyzed - New 'CanVary' heuristic to recursively determine if a subexpression has a varying element - Updated test cases, including one known bug - Exposed GRCoreEngine through GRExprEngine llvm-svn: 110970
-
- Aug 07, 2010
-
-
Tom Care authored
Removed IdempotentOperationChecker from default analysis and returned back to a flag (-analyzer-check-idempotent-operations) - Added IdempotentOperationChecker to experimental analyses for testing purposes - Updated test cases to explictly call the checker llvm-svn: 110482
-
- Aug 03, 2010
-
-
Tom Care authored
Changed GRExprEngine to pass down a reference to itself when checkers are doing postanalysis. This allows the checker to gather information about the state of the engine when it has finished. - Exposed the worklist and BlockAborted flag in GRCoreEngine - Changed postanalysis checkers to use the new infrastructure llvm-svn: 110095
-
- Aug 02, 2010
-
-
Ted Kremenek authored
lookups in the hashtable. llvm-svn: 110059
-
- Jul 30, 2010
-
-
Tom Care authored
llvm-svn: 109893
-
- Jul 28, 2010
-
-
Tom Care authored
Extracted out some useful common functions in IdempotentOperationChecker to their own CheckerHelpers file. llvm-svn: 109560
-
- Jul 27, 2010
-
-
Ted Kremenek authored
Finesse 'idempotent operations' analyzer issues to include the opcode of the binary operator for clearer error reporting. Also remove the 'Idempotent operation' prefix in messages; it's redundant since the bug type is the same. llvm-svn: 109527
-
Ted Kremenek authored
llvm-svn: 109517
-
- Jul 17, 2010
-
-
Ted Kremenek authored
an APFloat with different "float semantics" than the compared float literal. llvm-svn: 108590
-
- Jul 16, 2010
-
-
Tom Care authored
Improved false positive rate for the idempotent operations checker and moved it into the default path-sensitive analysis options. - Added checks for static local variables, self assigned parameters, and truncating/extending self assignments - Removed command line option (now default with --analyze) - Updated test cases to pass with idempotent operation warnings llvm-svn: 108550
-
- Jul 07, 2010
-
-
Tom Care authored
Change explicit handling of impossible condition to call llvm_unreachable in IdempotentOperationChecker::PreVisitBinaryOperator. llvm-svn: 107748
-
Chandler Carruth authored
making the other switch case unreachable, or sinking the 'continue' into it doesn't silence this. llvm-svn: 107745
-
Chandler Carruth authored
consider them for warnings. llvm-svn: 107741
-