- Nov 25, 2009
-
-
Fariborz Jahanian authored
to build casted expression-list AST to Sema. llvm-svn: 89827
-
Douglas Gregor authored
All statements that involve conditions can now hold on to a separate condition declaration (a VarDecl), and will use a DeclRefExpr referring to that VarDecl for the condition expression. ForStmts now have such a VarDecl (I'd missed those in previous commits). Also, since this change reworks the Action interface for if/while/switch/for, use FullExprArg for the full expressions in those expressions, to ensure that we're emitting Note that we are (still) not generating the right cleanups for condition variables in for statements. That will be a follow-on commit. llvm-svn: 89817
-
Sebastian Redl authored
Have the parser tell sema whether a member declaration is a function definition. This allows sema to not emit spurious diagnostics in some invalid code. llvm-svn: 89816
-
- Nov 24, 2009
-
-
Ted Kremenek authored
For the nil-receiver checker, take into account the behavioral changes that got introduced in Mac OS X 10.5 and later, notably return values of double, float, etc., will not be garbage. Fixes <rdar://problem/6829160>. llvm-svn: 89809
-
Ted Kremenek authored
initial transition of the nil-receiver checker to the Checker interface as done in r89745. Some important changes include: 1) We consolidate the BugType object used for nil receiver bug reports, and don't include the type of the returned value in the BugType (which would be wrong if a nil receiver bug was reported more than once) 2) Added a new (temporary) flag to CheckerContext: DoneEvauating. This is used by GRExprEngine when evaluating message expressions to not continue evaluating the message expression if this flag is set. This flag is currently set by the nil receiver checker. This is an intermediate solution to allow the nil-receiver checker to properly work as a plug-in outside of GRExprEngine. Basically, this flag indicates that the entire message expression has been evaluated, not just a precondition (which is what the nil-receiver checker does). This flag *should not* be repurposed for general use, but just to pull more things out of GRExprEngine that already in there as we devise a better interface in the Checker class. 3) Cleaned up the logic in the nil-receiver checker, making the control-flow a lot easier to read. llvm-svn: 89804
-
Fariborz Jahanian authored
the common routine. llvm-svn: 89802
-
Douglas Gregor authored
llvm-svn: 89801
-
Douglas Gregor authored
cleanups for while loops: 1) Make sure that we destroy the condition variable of a while statement each time through the loop for, e.g., while (shared_ptr<WorkInt> p = getWorkItem()) { // ... } 2) Make sure that we always enter a new cleanup scope for the body of the while loop, even when there is no compound expression, e.g., while (blah) RAIIObject raii(blah+1); llvm-svn: 89800
-
Anders Carlsson authored
With this change, the clang-on-clang test result is now Expected Passes : 224 Unexpected Failures: 37 Which means that we can compile over 80% of clang with clang! :) llvm-svn: 89799
-
John McCall authored
member-reference contexts. Fixes some clang-on-clang asserts. llvm-svn: 89796
-
Fariborz Jahanian authored
llvm-svn: 89789
-
John McCall authored
DependentScopeDeclRefExpr support storing templateids. Unite the common code paths between ActOnDeclarationNameExpr and ActOnTemplateIdExpr. This gets us to a point where we don't need to store function templates in the AST using TemplateNames, which is critical to ripping out OverloadedFunction. Also resolves a few FIXMEs. llvm-svn: 89785
-
Anders Carlsson authored
Handle cases where we're constructing an array of objects and the constructor has default arguments. llvm-svn: 89783
-
John McCall authored
llvm-svn: 89782
-
Fariborz Jahanian authored
Add support for variadic collection functions. More to do here. llvm-svn: 89781
-
Anders Carlsson authored
llvm-svn: 89778
-
Douglas Gregor authored
make sure that this variable is destroyed when we exit the switch statement. llvm-svn: 89776
-
Anders Carlsson authored
We always need to emit the base expression of a member expression, even when the member decl refers to an enum. Thanks to Eli for pointing this out! llvm-svn: 89775
-
Anders Carlsson authored
llvm-svn: 89774
-
Douglas Gregor authored
- Outside the "if", to ensure that we destroy the condition variable at the end of the "if" statement rather than at the end of the block containing the "if" statement. - Inside the "then" and "else" branches, so that we emit then- or else-local cleanups at the end of the corresponding block when the block is not a compound statement. To make adding these new cleanup scopes easier (and since switch/do/while will all need the same treatment), added the CleanupScope RAII object to introduce a new cleanup scope and make sure it gets cleaned up. llvm-svn: 89773
-
Douglas Gregor authored
llvm-svn: 89769
-
Douglas Gregor authored
llvm-svn: 89767
-
Edward O'Callaghan authored
llvm-svn: 89766
-
Zhongxing Xu authored
llvm-svn: 89751
-
Zhongxing Xu authored
llvm-svn: 89750
-
Zhongxing Xu authored
CallAndMessageChecker. llvm-svn: 89745
-
Anders Carlsson authored
llvm-svn: 89742
-
Anders Carlsson authored
llvm-svn: 89741
-
Anders Carlsson authored
Set the template specialization kind before instantiating the function definition so that the function will have the right linkage. llvm-svn: 89740
-
Eli Friedman authored
static member constants. No significant visible difference at the moment because it conservatively assumes the base has side effects. I'm planning to use this for CodeGen. llvm-svn: 89738
-
Anders Carlsson authored
llvm-svn: 89737
-
Anders Carlsson authored
It is common for vtables to contain pointers to functions that have either incomplete return types or incomplete argument types. Handle this by returning the llvm::OpaqueType for those cases, which CodeGenModule::GetOrCreateLLVMFunction knows about, and treats as being an "incomplete function". llvm-svn: 89736
-
Zhongxing Xu authored
llvm-svn: 89735
-
Zhongxing Xu authored
llvm-svn: 89734
-
Ted Kremenek authored
Enhance null dereference diagnostics by indicating what variable (if any) was dereferenced. Addresses <rdar://problem/7039161>. llvm-svn: 89726
-
Daniel Dunbar authored
llvm-svn: 89721
-
Douglas Gregor authored
rather than burying it in a CXXConditionDeclExpr (that occassionally hides behind implicit conversions). Similar changes for switch, while, and do-while will follow, then the removal of CXXConditionDeclExpr. This commit is the canary. llvm-svn: 89717
-
Daniel Dunbar authored
llvm-svn: 89716
-
Ted Kremenek authored
After performing a bounds check in ArrayBoundChecker, record the fact that a bounds check succeeded by transitioning the ExplodedGraph. llvm-svn: 89712
-
- Nov 23, 2009
-
-
Ted Kremenek authored
along the way. Important changes: 1) To generate a sink node, use GenerateSink(); GenerateNode() is for generating regular transitions. This makes the API clearer and also allows us to use the 'bool' option to GenerateNode() for a different purpose. 2) GenerateNode() now automatically adds the generated node to the destination ExplodedNodeSet (autotransition) unless the client specifies otherwise with a bool flag. Several checkers did not call 'addTransition()' after calling 'GenerateNode()', causing the simulation path to be prematurely culled when a non-fail stop bug was encountered. 3) Add variants of GenerateNode()/GenerateSink() that take neither a Stmt* or a GRState*; most callers of GenerateNode() just pass in the same Stmt* as provided when the CheckerContext object is created; we can just use that the majority of the time. This cleanup also allows us to potentially coelesce the APIs for evaluating branches and end-of-paths (which currently directly use builders). 4) addTransition() no longer needs to be called except for a few cases. We now have a variant of addTransition() that takes a GRState*; this allows one to propagate the updated state without caring about generating a new node explicitly. This nicely cleaned up a bunch of cases that called autoTransition() with a bunch of conditional logic surround the call (that common logic has now been swallowed up by addTransition() itself). llvm-svn: 89707
-