aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema
AgeCommit message (Collapse)Author
2008-04-12Fixed comments.Argyrios Kyrtzidis
Moved IdDeclInfo class to anonymous namespace. Replaced array with a std::vector. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49570 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-12Added PushOnScopeChains method to Sema, that adds a decl to both the ↵Argyrios Kyrtzidis
IdResolver and the Scope. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49567 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-11AST generation for objc2's property declarations.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49565 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-11Add class and super class location info to ObjCInterfaceDecl...Steve Naroff
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49553 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-11Minor changes per Chris L's review.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49539 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-11two new files for previous patch, by Argiris KirtzidisChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49521 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-11Switch sema to maintaining its own scope chain information for variableChris Lattner
shadowing, instead of threading it through the AST. This patch contributed by Argiris Kirtzidis! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49520 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-10Patch for:Fariborz Jahanian
1) objc ivar processing is split out of ActOnField into its own ActOnIvar method. 2) the new objc ivar action takes visibility info directly, eliminating AllVisibilities in ParseObjCClassInstanceVariables. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49506 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-10 typedef void T;Chris Lattner
void f(T); is only invalid in C++ mode, not C89 mode. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49460 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-10Several improvements from Doug Gregor related to defaultChris Lattner
argument handling. I'll fix up the c89 (void) thing next. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49459 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-08Add support for C++ default arguments, and rework Parse-Sema Chris Lattner
interaction for function parameters, fixing PR2046. Patch by Doug Gregor! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49370 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-08Add support for C++ default arguments, and rework Parse-Sema Chris Lattner
interaction for function parameters, fixing PR2046. Patch by Doug Gregor! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49369 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-07simplify reference handling.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49325 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-07simplify compatibility testing for tag types.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49323 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-07move ObjCQualifiedIdTypesAreCompatible out of ASTContext into Sema.Chris Lattner
While it is similar to the other compatibility predicates in ASTContext, it is not used by them and is different. In addition, greatly simplify ObjCQualifiedIdTypesAreCompatible and fix some canonical type bugs. Also, simplify my Type::getAsObjC* methods. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49313 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-06simplify max type computation by making it return an integer (like Chris Lattner
getFloatingTypeOrder) instead of a type. Fix a fixme. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49297 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-06minor simplifications/cleanups to type comparisons.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49296 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-06remove the Decl::getCanonicalType() method.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49295 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-06Start switching clients over from CT.getCanonicalType() to ↵Chris Lattner
Context.getCanonicalType(CT) for PR2189. While I'm at it, clean up a bit of maxIntegerType. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49292 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-06move a semantic check out of the parser into sema.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49273 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-06This patch contains these changes:Chris Lattner
-Renamed ContextDecl -> DeclContext -Removed DeclContext pointer from FieldDecl -EnumDecl inherits from DeclContext, instead of TagDecl Patch by Argiris Kirtzidis! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49261 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-05Fix handling of implicit int, resolving PR2012 and reverting (andChris Lattner
subsuming) my patch for PR1999. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49251 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-04Add explicit support for diagnosing implicit function decls.Steve Naroff
Without this, the diagnostic is very confusing. The diag is now consistent with gcc as well. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49214 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-04Introduce ContextDecl, patch by Argiris Kirtzidis!Chris Lattner
-Added ContextDecl (no TranslationUnitDecl) -ScopedDecl class has a ContextDecl member -FieldDecl class has a ContextDecl member, so that a Field or a ObjCIvar can be traced back to their RecordDecl/ObjCInterfaceDecl easily -FunctionDecl, ObjCMethodDecl, TagDecl, ObjCInterfaceDecl inherit from ContextDecl. With TagDecl as ContextDecl, enum constants have a EnumDecl as their context. -Moved Decl class to a "DeclBase.h" along with ContextDecl class -CurContext is handled by Sema git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49208 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-04Ignore qualifiers when checking vector operands, just like scalar operands.Nate Begeman
This prevents things like a += b[0]; where a is a float4 and b is a float4 * (address_space 1) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49199 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-03Fix a bug where we didn't check the RHS for null, we checkedChris Lattner
the LHS for null twice. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49138 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-02Change ObjCInterfaceDecl to inherit from NamedDecl (not TypeDecl). While ↵Steve Naroff
ObjCInterfaceDecl is arguably a TypeDecl, it isn't a ScopedDecl. Since TypeDecl's are scoped, it makes sense to simply treat them as NamedDecl's. I could have fiddled a bit more with the hierarchy (in terms of creating a non-scoped TypeDecl), however this probably isn't worth the effort. I also finished unifying access to scope decl change by converting Sema::getObjCInterfaceDecl() to use Sema::LookupDecl(). This is much cleaner now:-) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49107 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-02simplify some code by using PointerLikeType.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49101 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-02add a common base class "PointerLikeType" for PointerType and ReferenceType,Chris Lattner
allowing them to be treated the same in some contexts. A suggestion for a better name is welcome :) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49100 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-02properly handle array decay in objc message exprs.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49098 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-02Two changes to Sema::LookupDecl() interface. Steve Naroff
(1) Remove IdLoc (it's never used). (2) Add a bool to enable/disable lazy builtin creaation (defaults to true). This enables us to use LookupDecl() in Sema::isTypeName(), which is also part of this commit. To make this work, I changed isTypeName() to be a non-const member function. I'm not happy with this, however I fiddled with making LookupDecl() and friends const and it got ugly pretty quickly. We can certainly add it back if/when someone has time to fiddle with it. For now, I thought this simplification was more important than retaining the const-ness. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49087 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-02Various parts of the standard require something to be an "incomplete or Chris Lattner
object type". Add a predicate that checks exactly this, as it is equivalent to checking ot see if the type is *not* a function type, which is faster to check. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49082 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-021) Enforce C99 6.7.3p2: "Types other than pointer types derived fromChris Lattner
object or incomplete types shall not be restrict-qualified." 2) Warn about qualifiers on function types: C99 6.7.3p8: "If the specification of a function type includes any type qualifiers, the behavior is undefined." 3) Implement restrict on C++ references. 4) fix some locations for various C++ reference diagnostics. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49081 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-02Fix several bugs in array -> pointer decomposition.Chris Lattner
First, we got several CVR propagation cases wrong, which Eli pointed out in PR2039. Second, we didn't propagate address space qualifiers correctly, leading to incorrect lowering of code in CodeGen/address-space.c. Third, we didn't uniformly propagate the specifier in the array to the pointer ("int[restrict 4]" -> "int *restrict"). This adds an ASTContext::getArrayDecayedType member that handles the non-trivial logic for this seemingly simple operation. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49078 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-02rename some variables, fix 80 col violation. No Chris Lattner
functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49072 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-02Fix PR2017 and silence some bogus errors.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49068 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-02Fix a comment typo and add a couple suggestions from Chris.Steve Naroff
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49066 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-01Fairly large "cleaup" related to changing ObjCCompatibleAliasDecl superclass ↵Steve Naroff
(to inherit from NamedDecl, instead of ScopedDecl). - Added a DenseMap to associate an IdentifierInfo with the ObjCCompatibleAliasDecl. - Renamed LookupScopedDecl->LookupDecl and changed it's return type to Decl. Also added lookup for ObjCCompatibleAliasDecl's. - Removed Sema::LookupInterfaceDecl(). Converted clients to used LookupDecl(). - Some minor indentation changes. Will deal with ObjCInterfaceDecl and getObjCInterfaceDecl() in a separate commit... git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49058 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-31rename Decl::CompatibleAlias -> ObjCCompatibleAlias.Chris Lattner
Fix objc ivar lookup. Ivar lookup should occur between lookup of method-local values and lookup of globals. Emulate this with some logic in the handling of Sema::ActOnIdentifierExpr. Two todo's left: 1) sema shouldn't turn a bare reference to an ivar into "self->ivar" in the AST. This is a hack. 2) The new ScopedDecl::isDefinedOutsideFunctionOrMethod method does not correctly handle typedefs and enum constants yet. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48972 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-28Make sure Sema::ActOnClassMessage() correctly diagnoses "super".Steve Naroff
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48924 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-26Alloc redeclaration of typedefs within ExternCSystemHeaderDir's AND ↵Steve Naroff
SystemHeaderDir's. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48841 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-25allow the format attribute to be specified in function pointer prototypesNuno Lopes
# this is my first commit here, so please be gentle :) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48807 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-25Extend QualType::getAddressSpace to do the right thing for array types, and inNate Begeman
the future, RecordTypes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48784 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-19Fix typo.Steve Naroff
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48571 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-19Fix http://llvm.org/bugs/show_bug.cgi?id=2161.Steve Naroff
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48568 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-17Check in a couple fixes for vector extensions. Nate Begeman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48461 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-17clean up property memory allocation to move it into the ast classesChris Lattner
like the rest of the classes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48434 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-16make property addition work list all other "add" methods. Do Chris Lattner
the allocation in the class, not in sema. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48433 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-16add the last two Create methods for decls, woo!Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48432 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-16add two more Create methods.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48428 91177308-0d34-0410-b5e6-96231b3b80d8