- Apr 25, 2009
-
-
Evan Cheng authored
Do not share a single unknown val# for all the live ranges merged into a physical sub-register live interval. When coalescer is merging in clobbered virtaul register live interval into a physical register live interval, give each virtual register val# a separate val# in the physical register live interval. Otherwise, the coalescer would have lost track of the definitions information it needs to make correct coalescing decisions. llvm-svn: 70026
-
Chris Lattner authored
always return a non-null QualType + error bit. This fixes a bunch of cases that didn't check for null result (and could thus crash) and eliminates some crappy code scattered throughout sema. This also improves the diagnostics in the recursive struct case to eliminate a bogus second error. It also cleans up the case added to function.c by forming a proper function type even though the declarator is erroneous, allowing the parameter to be added to the function. Before: t.c:2:1: error: unknown type name 'unknown_type' unknown_type f(void*P) ^ t.c:4:3: error: use of undeclared identifier 'P' P+1; ^ After: t.c:2:1: error: unknown type name 'unknown_type' unknown_type f(void*P) ^ llvm-svn: 70023
-
Chris Lattner authored
llvm-svn: 70022
-
Chris Lattner authored
llvm-svn: 70021
-
Chris Lattner authored
This gets rid of a bunch of random InvalidDecl bools in sema, changing us to use the following approach: 1. When analyzing a declspec or declarator, if an error is found, we set a bit in Declarator saying that it is invalid. 2. Once the Decl is created by sema, we immediately set the isInvalid bit on it from what is in the declarator. From this point on, sema consistently looks at and sets the bit on the decl. This gives a very clear separation of concerns and simplifies a bunch of code. In addition to this, this patch makes these changes: 1. it renames DeclSpec::getInvalidType() -> isInvalidType(). 2. various "merge" functions no longer return bools: they just set the invalid bit on the dest decl if invalid. 3. The ActOnTypedefDeclarator/ActOnFunctionDeclarator/ActOnVariableDeclarator methods now set invalid on the decl returned instead of returning an invalid bit byref. 4. In SemaType, refering to a typedef that was invalid now propagates the bit into the resultant type. Stuff declared with the invalid typedef will now be marked invalid. 5. Various methods like CheckVariableDeclaration now return void and set the invalid bit on the decl they check. There are a few minor changes to tests with this, but the only major bad result is test/SemaCXX/constructor-recovery.cpp. I'll take a look at this next. llvm-svn: 70020
-
Sanjiv Gupta authored
llvm-svn: 70019
-
Douglas Gregor authored
llvm-svn: 70018
-
Douglas Gregor authored
we see what trouble it causes. llvm-svn: 70017
-
Chris Lattner authored
parameters in a functiondecl, even if the decl is invalid and has a confusing Declarator. On the testcase, we now emit one beautiful diagnostic: t.c:2:1: error: unknown type name 'unknown_type' unknown_type f(void*) ^ GCC 4.0 produces: t.c:2: error: syntax error before ‘f’ t.c: In function ‘f’: t.c:2: error: parameter name omitted and GCC 4.2: t.c:2: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘f’ llvm-svn: 70016
-
Chris Lattner authored
remove a special case that was apparently for typeof() and generalize the code in SemaDecl that handles typedefs to handle any sugar type (including typedef, typeof, etc). Improve comment to make it more clear what is going on. llvm-svn: 70015
-
Chris Lattner authored
static in Decl.cpp. llvm-svn: 70014
-
Chris Lattner authored
typedef void foo(void); We get a typedef for a functiontypeproto with no arguments, not one with one argument and type void. This means the code being removed in SemaDecl is dead. llvm-svn: 70013
-
Daniel Dunbar authored
don't yet understand where this is happening in llvm-gcc). llvm-svn: 70012
-
Chris Lattner authored
functions with prototypes get the bit. llvm-svn: 70011
-
Daniel Dunbar authored
llvm-svn: 70010
-
Daniel Dunbar authored
types. - I broke this in the switch to representing interfaces with opaque types. - <rdar://problem/6822660> clang crashes on subscript of interface in 32-bit mode llvm-svn: 70009
-
Ted Kremenek authored
users to specify that a method's argument is visibly retained (reference count incremented). llvm-svn: 70008
-
Douglas Gregor authored
llvm-svn: 70007
-
Bob Wilson authored
f64 types. This is not used for anything yet. llvm-svn: 70006
-
Ted Kremenek authored
to the checker yet, but essentially it allows a user to specify that an Objective-C method or C function increments the reference count of a passed object. llvm-svn: 70005
-
Chris Lattner authored
llvm-svn: 70004
-
Douglas Gregor authored
When we de-serialize an Objective-C protocol, hand it to the AST consumer so that we can create metadata llvm-svn: 70003
-
Ted Kremenek authored
llvm-svn: 70002
-
Ted Kremenek authored
up to the checker yet, but essentially it allows a user to specify that an Objective-C method or C function returns an owned an Objective-C object. llvm-svn: 70001
-
Anders Carlsson authored
llvm-svn: 70000
-
Chris Lattner authored
by correctly propagating the fact that the type was invalid up to the attributeRuns decl, then returning an ExprError when attributeRuns is formed (like we do for normal declrefexprs). llvm-svn: 69998
-
Douglas Gregor authored
llvm-svn: 69996
-
Douglas Gregor authored
the Objective-C interface. llvm-svn: 69993
-
- Apr 24, 2009
-
-
rdar://problem/6793409Ted Kremenek authored
involving an NSAnimation object delegating its release to a delegate method. llvm-svn: 69992
-
Douglas Gregor authored
(1) Make sure to pad on-disk hash tables with 4 bytes, not 2, since the reader assumes that bucket data is aligned on 4-byte boundaries. (2) Don't emit the number of factory methods twice. This was throwing off the data counts and therefore causing lookups to fail. I've added asserts so that this class of error cannot happen again. llvm-svn: 69991
-
Dale Johannesen authored
This particular one is undefined behavior (although this isn't related to the crash), so it will no longer do it at compile time, which seems better. llvm-svn: 69990
-
Douglas Gregor authored
pools, combined). The methods in the global method pool are lazily loaded from an on-disk hash table when Sema looks into its version of the hash tables. llvm-svn: 69989
-
Fariborz Jahanian authored
llvm-svn: 69988
-
Steve Naroff authored
llvm-svn: 69987
-
Ted Kremenek authored
change. llvm-svn: 69985
-
Ted Kremenek authored
delegates. When a reference counted object is passed as to a 'void*' argument to a method stop tracking the reference count. llvm-svn: 69984
-
Ted Kremenek authored
llvm-svn: 69983
-
Ted Kremenek authored
- Fix summary lookup for class methods to now use the (optional) ObjCInterfaceDecl associated with a message expression. This removes a long-standing FIXME. - Partial fix for <rdar://problem/6062730> by stop tracking objects that are passed to [NSObject performSelector]. These methods are often used for delegates, which the analyzer doesn't reason about well yet. llvm-svn: 69982
-
Anders Carlsson authored
llvm-svn: 69981
-
Fariborz Jahanian authored
application of sizeof on an interface. llvm-svn: 69980
-