aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2009-02-25Add experimental logic in GRExprEngine::EvalEagerlyAssume() to handleTed Kremenek
expressions of the form: 'short x = (y != 10);' While we handle 'int x = (y != 10)' lazily, the cast to another integer type currently loses the symbolic constraint. Eager evaluation of the constraint causes the paths to bifurcate and eagerly evaluate 'y != 10' to a constant of 1 or 0. This should address <rdar://problem/6619921> until we have a better (more lazy approach) for handling promotions/truncations of symbolic integer values. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65480 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-25Improve location information on "reused" class template specializationDouglas Gregor
decls. Test and document the semantic location of class template specialization definitions that occur within a scope enclosing the scope of the class template. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65478 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-25Perform additional semantic checking of class templateDouglas Gregor
specializations. In particular: - Make sure class template specializations have a "template<>" header, and complain if they don't. - Make sure class template specializations are declared/defined within a valid context. (e.g., you can't declare a specialization std::vector<MyType> in the global namespace). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65476 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-25Do not automatically run the 'missing -dealloc' check until we have adequate ↵Ted Kremenek
time to make it much smarter (too much noise). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65474 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-25Temporarily disable clearing of insert point (to indicate unreachableDaniel Dunbar
code) when calling noreturn functions; general expression emission isn't ready to do the right thing in all cases. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65473 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-25Allow constant initializers to reference their defining decl.Daniel Dunbar
- PR3662. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65472 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-25Include the appropriate header for mallocDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65471 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-25Fold GeneraticStaticBlockVarDecl into callers.Daniel Dunbar
- No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65470 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-25Implement parsing of nested-name-specifiers that involve template-ids, e.g.,Douglas Gregor
std::vector<int>::allocator_type When we parse a template-id that names a type, it will become either a template-id annotation (which is a parsed representation of a template-id that has not yet been through semantic analysis) or a typename annotation (where semantic analysis has resolved the template-id to an actual type), depending on the context. We only produce a type in contexts where we know that we only need type information, e.g., in a type specifier. Otherwise, we create a template-id annotation that can later be "upgraded" by transforming it into a typename annotation when the parser needs a type. This occurs, for example, when we've parsed "std::vector<int>" above and then see the '::' after it. However, it means that when writing something like this: template<> class Outer::Inner<int> { ... }; We have two tokens to represent Outer::Inner<int>: one token for the nested name specifier Outer::, and one template-id annotation token for Inner<int>, which will be passed to semantic analysis to define the class template specialization. Most of the churn in the template tests in this patch come from an improvement in our error recovery from ill-formed template-ids. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65467 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-25Pull COdeGenFunction::CreateStaticBlockVarDecl (just for creating theDaniel Dunbar
global variable) out of GenerateStaticBlockVarDecl. - No intended functionality change. - Prep for some mild cleanups and PR3662. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65466 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-25add c++ search path for GCC 4.2, PR3668, patch by Pawel Worach!Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65462 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-25Use CheckAssignmentConstraints for checking the cleanup attr function. Fixes ↵Anders Carlsson
PR3656. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65461 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-25C99 DR #316 implies that the function parameter types that are knownDouglas Gregor
only from a function definition (that does not have a prototype) are only used to determine the compatible with other declarations of that same function. In particular, when referencing the function we pretend as if it does not have a prototype. Implement this behavior, which fixes PR3626. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65460 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-25fix (hopefully) some validation errorsGabor Greif
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65455 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-25minor tweaks to readabilityGabor Greif
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65440 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-25updateChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65433 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-25Headers are basically done, debug info is just about done (and Chris Lattner
will improve a lot this week hopefully), and a libgcc replacement is ready once I wrangle lawyers. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65432 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-25clang seems "generally useful" for c and objc by now, though obviously bugsChris Lattner
still remain. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65431 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-25Minor cleanup for IntToBlockPointer so it applies to all callers of Eli Friedman
Sema::CheckAssignmentConstraints; not really visible, but the right thing to do. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65428 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-25retain/release checker: Implement basic tracking of autorelease stack. Next ↵Ted Kremenek
thing is to wire up pools with their contents. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65425 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-25Implement 'Add' method for GRStatePartialTrait<ImmutableList<T>>.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65424 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-25Fix comments.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65423 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-25Enable debug info emission for objc methods.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65422 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-25Update checker build.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65421 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-25Remove a FIXME; I was mistaken in believing gcc rejected this.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65420 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-25Fix condition in ccc-analyzer that would cause the analyzer never to be run.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65417 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-24Minor refactoring.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65414 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-24patch for two things.Fariborz Jahanian
make sure objc2's nonfragile abi is enacted for Leopard too. add -fobjc-gc-only flag to the image_info symbol. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65413 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-24Fix broken logic from my last commit. Branches only occur at basic blocks ↵Ted Kremenek
that end with terminators. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65410 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-24Fix diagnostic regression where the leak diagnostic could appear earlier in ↵Ted Kremenek
the path than the branches taken. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65407 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-24If Loc is invalid (e.g. "self" in Objective-C) then use MainFileID's compile ↵Devang Patel
unit. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65403 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-24handle @encode interactions with array initializers.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65401 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-24rename CheckStringLiteralInit to CheckStringInit and pass in the Chris Lattner
string size as an argument. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65400 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-24make SemaRef be a reference to sema, not a pointer.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65399 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-24move InitListChecker to be private to SemaInit.cppChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65398 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-24Make CheckSingleInitializer a static function in SemaInit.cppChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65397 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-24make CheckStringLiteralInit a static function in SemaInit.cppChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65396 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-24change IsStringLiteralInit into a static function in SemaInit.cppChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65395 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-24move some initialization checking code from SemaDecl.cppChris Lattner
to SemaInit.cpp, no functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65394 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-24first wave of fixes for @encode sema support. This is part of PR3648.Chris Lattner
The big difference here is that (like string literal) @encode has array type, not pointer type. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65391 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-24ccc-analyzer: Don't analyze files with '-arch ppc' or '-arch ppc64' since ClangTed Kremenek
doesn't support Altivec intrisics nor is it likely that we're currently generating all the right #defines, etc., for those architectures. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65390 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-24some minor cleanups, handle ObjCEncodeExpr in a couple places.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65389 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-24improve comments.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65388 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-24Set flag for -fobjc-gc in IMAGE_INFO variable.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65387 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-24When we're declaring an object or function with linkage, teach nameDouglas Gregor
lookup to skip over names without linkage. This finishes <rdar://problem/6127293>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65386 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-24Extend the implicit declaration and checking against out-of-scopeDouglas Gregor
external declarations to also support external variable declarations. Unified the code for these two cases into two new subroutines. Note that we fail to diagnose cases like the one Neil pointed out, where a visible non-external declaration hides an external declaration by the same name. That will require some reshuffling of name lookup. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65385 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-24retain/release checker:Ted Kremenek
- For autorelease pool tracking, keep information about the stack of pools separate from their contents. Also, keep track of the number of times an autorelease pool will send the "release" message to an object when the pool is destroyed. - Update CFRefCount::Update to return a new state instead of a reference count binding. This will allow us to implement more complicated semantics with autorelease pools. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65384 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-24Fix IRgen of constant expressions referring to external/staticDaniel Dunbar
variables. - PR3657. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65381 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-24Some initial Obj-C zero cost EH support.Daniel Dunbar
- Only handles cases with @try with no @catch blocks, and there are a number of problems with the implementation. Nevertheless, this is good enough to handled @synchronized correctly, and some other basic uses. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65378 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-24Add a very primitive clang based multifile 'delta'.Daniel Dunbar
- Interface is more or less like multidelta. - Keep in mind it won't work very well; delta is O(N^2) frequently in practice. multidelta manages to work because it folds lines to keep N small, but this is just working on raw tokens. However, I have a fancy pants DAG based delta algorithm which will be the bees knees once I get it wired to clang. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65377 91177308-0d34-0410-b5e6-96231b3b80d8