aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2009-04-12mark the declspec as invalid when we recover instead of forcing to int,Chris Lattner
this allows downstream diags to be properly silenced. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68917 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12fix code that incorrectly assumed that GetTypeForDeclarator cannotChris Lattner
return null. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68916 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12Diagnose invalid uses of tagged types with a missing tag. For example, in:Chris Lattner
struct xyz { int y; }; enum abc { ZZZ }; static xyz b; abc c; we used to produce: t2.c:4:8: error: unknown type name 'xyz' static xyz b; ^ t2.c:5:1: error: unknown type name 'abc' abc c; ^ we now produce: t2.c:4:8: error: use of tagged type 'xyz' without 'struct' tag static xyz b; ^ struct t2.c:5:1: error: use of tagged type 'abc' without 'enum' tag abc c; ^ enum GCC produces the normal: t2.c:4: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘b’ t2.c:5: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘c’ rdar://6783347 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68914 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12fix a valgrind problem I noticed while developing another patch,Chris Lattner
if a decl is invalid, it isn't added to the Decls array, so we need to pass in Decls.size() to avoid reading uninit memory. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68913 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12Implement the first set of changes for PR3963 and rdar://6759604,Chris Lattner
which tries to do better error recovery when it is "obvious" that an identifier is a mis-typed typename. In this case, we try to parse it as a typename instead of as the identifier in a declarator, which gives us several options for better error recovery and immediately makes diagnostics more useful. For example, we now produce: t.c:4:8: error: unknown type name 'foo_t' static foo_t a = 4; ^ instead of: t.c:4:14: error: invalid token after top level declarator static foo_t a = 4; ^ Also, since we now parse "a" correctly, we make a decl for it, preventing later uses of 'a' from emitting things like: t.c:12:20: error: use of undeclared identifier 'a' int bar() { return a + b; } ^ I'd really appreciate any scrutiny possible on this, it is a tricky area. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68911 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12add a new isNull() method to DeclGroupRef.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68909 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12a few cleanups to StatementCreatesScope: unnest the whole thing,Chris Lattner
exit at the first decl found that creates a scope, don't evaluate decl_end() every iteration. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68908 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12add a new Decl::hasAttr<T>() predicate.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68907 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12OS dependent code removed.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68904 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12Add deleted functions and rvalue references to C++ status.Sebastian Redl
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68903 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12Parse deleted member functions. Parsing member declarations goes through a ↵Sebastian Redl
different code path that I forgot previously. Implement the rvalue reference overload dance for returning local objects. Returning a local object first tries to find a move constructor now. The error message when no move constructor is defined (or is not applicable) and the copy constructor is deleted is quite ugly, though. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68902 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12rename testChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68900 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12Fix rdar://6770142 - Class and qualified id's are compatible, just likeChris Lattner
Class and unqualified id's are. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68899 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12rename testChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68898 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12merge protocol-test-1.m -> protocol-test-2.mChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68897 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12Merge forward-circular into protocol-test-2Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68896 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12this test is subsumed by protocol-test-2.mChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68895 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12Fix rdar://6771034: don't warn on use of forward declared protocol in protocolChris Lattner
list of another protocol definition. This warning is very noisy and GCC doesn't produce it so existing code doesn't expect it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68894 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12fix typo in test name.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68893 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12call objc interfaces just "interfaces" in diagnostics, not "Objective-C types"Chris Lattner
or "Objective-C interface types" etc. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68892 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12implement rdar://6780761, making sema reject some code that otherwiseChris Lattner
crashes codegen. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68891 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12Implement support for GCC's -dD mode, which dumps -E output *and*Chris Lattner
macro definitions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68884 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12add a ppcallback hook for macro definitions.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68883 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-11now that we have an identifier table in the PCH file, finish hooking upChris Lattner
macro deserialization. We now correctly install II's in tokens, handle function-like macros, etc. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68882 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-11test this in non-pch mode as well as in pch mode.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68881 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-11improve location info for property stuff. In a property like this:Chris Lattner
@property int x; associate the location of X with the property decl, not the location of the @. Also, pass this info along to the synthesized ParmVarDecls so that redefinition and other diagnostics can use it. This eliminates a fixme. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68880 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-11improve the 'conflicting types' diagnostics to include correct location ↵Chris Lattner
info, now that it is plumbed through Sema. On a file from growl, we used to emit: t.mi:107059:1: warning: conflicting types for 'removePluginHandler:forPluginTypes:' - (void) removePluginHandler:(id <GrowlPluginHandler>)handler forPluginTypes:(NSSet *)extensions { ^ t.mi:105280:1: note: previous definition is here - (void) removePluginHandler:(id <NSObject>)handler forPluginTypes:(NSSet *)types; ^ now we produce: t.mi:107059:55: warning: conflicting parameter types in implementation of 'removePluginHandler:forPluginTypes:': 'id<NSObject>' vs 'id<GrowlPluginHandler>' - (void) removePluginHandler:(id <GrowlPluginHandler>)handler forPluginTypes:(NSSet *)extensions { ^ t.mi:105280:45: note: previous definition is here - (void) removePluginHandler:(id <NSObject>)handler forPluginTypes:(NSSet *)types; ^ We still don't have proper loc info for properties, hence the FIXME. rdar://6782494 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68879 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-11pass -fblocksChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68878 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-11Set proper location info on objc method arguments.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68877 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-11simplify code to use adjustParameterType, apply objc arg attributesChris Lattner
to their arguments. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68876 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-11fix blocks to reject objc interfaces returned by value. Also,Chris Lattner
a block without a prototype should still coerce a return in it to use the declared return type. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68875 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-11fix testChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68874 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-11diagnose attempts to return objc interfaces by-value from C functions.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68873 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-11Improve the 'cannot pass objc interface by value' diagnostic:Chris Lattner
1) improve localizability by not passing english strings in. 2) improve location for arguments. 3) print the objc type being passed. Before: method-bad-param.m:15:1: error: Objective-C type cannot be passed by value -(void) my_method:(foo) my_param ^ after: method-bad-param.m:15:25: error: Objective-C interface type 'foo' cannot be passed by value -(void) my_method:(foo) my_param ^ git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68872 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-11change the interface to ActOnMethodDeclaration to pass down argumentChris Lattner
information in a little struct instead of individually. While we're at it, add per-argument loc info and attribute info. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68871 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-11Minor refactoring of my last patch.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68870 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-11sink abstract typedefs like Action::ExprTy from the Action classChris Lattner
down to the ActionBase class. This eliminates dependencies of (e.g.) DeclSpec.h on Action.h, meaning that action.h can now include these headers and use their types directly in the actions interfaces. This is a refactoring to support a future change, no functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68869 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-11add some #includes for better compatibility with gcc 4.4,Chris Lattner
thanks to Tobias Stadler for pointing this out. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68868 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-11rename Parser::ParseObjCSelector -> Parser::ParseObjCSelectorPiece,Chris Lattner
since it only parses one identifier out of the selector, not the whole thing. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68867 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-11simplify this code to not bother stripping to canonical types, andChris Lattner
indent code properly git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68866 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-11Fixes a ir-gen crash for K&R style blocks.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68865 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-11add radar numberChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68864 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-11Update analyzer build.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68860 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-11analyzer: We cannot bind values to CodeTextRegions.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68857 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-11Tweak wording, input argument isn't necessarily a "file", things likeDaniel Dunbar
-lstdc++ are inputs too. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68854 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-11Don't mangle variables that are at translation unit scope.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68853 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-11Add support for generating reference initialization code.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68852 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-11Add analyzer support for objc_atomicCompareAndSwap()Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68849 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-11Store unique IDs for identifiers in the PCH file. Use some bitmanglingDouglas Gregor
so that we only need to perform the lookup and identifier resolution once per identifier in the PCH file. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68846 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-11Implement analyzer support for OSCompareAndSwap. This required pushing "tagged"Ted Kremenek
ProgramPoints all the way through to GRCoreEngine. NSString.m now fails with RegionStoreManager because of the void** cast. Disabling use of region store for that test for now. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68845 91177308-0d34-0410-b5e6-96231b3b80d8