aboutsummaryrefslogtreecommitdiff
path: root/lib/AST
AgeCommit message (Collapse)Author
2009-07-22"This patch implements the restrictions on union members detailed inDouglas Gregor
[class.union]p1", from John McCall! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76766 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-22Allocate BaseOrMemberInitializers and CXXBaseSpecifier nodesFariborz Jahanian
via ASTContext. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76758 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-22Fix a couple recent ABI regressions noticed during code review (fallout from ↵Steve Naroff
the ObjC type system rewrite). It's unfortunate that the mangling includes the low-level structs. Nevertheless, we need this for binary compatibility with GCC. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76755 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-22Fix <rdar://problem/6770276> Support Class<Proto> syntax.Steve Naroff
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76741 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-22Minor mod. per Doug's comment.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76708 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-21Patch to accomodate Doug's comment on defaultFariborz Jahanian
destruction of base/members for each destructor AST. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76663 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-21Add the location of the tag keyword into TagDecl. From EneaDouglas Gregor
Zaffanella, with tweaks from Abramo Bagnara. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76576 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-21Disambiguate an if statement.Duncan Sands
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76547 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-21Implement the virtual getNextRedeclaration() for ObjCMethodDecl.Argyrios Kyrtzidis
If it's in an ObjCContainerDecl, its "redeclaration" is the method definition in the corresponding ObjCImplDecl. If it's in an ObjCImplDecl, its "redeclaration" is the method in the interface. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76512 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-21Remove the ObjCCategoryImpls vector from Sema class.Argyrios Kyrtzidis
Use ObjCInterfaceDecl::getCategoryClassMethod() and ObjCInterfaceDecl::getCategoryInstanceMethod() for the same functionality. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76510 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-21- Introduce ASTContext::getObjCImplementation() and ↵Argyrios Kyrtzidis
ASTContext::setObjCImplementation() which use a DenseMap to associate an interface/category with its implementation (if one exists). - Introduce ObjCInterfaceDecl::get/setImplementation() and ObjCCategoryDecl::get/setImplementation() that use the above methods. - Add a compiler error for when a category is reimplemented. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76508 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-205 cleanups to ObjCObjectPointerType work:Steve Naroff
- Remove Sema::CheckPointeeTypesForAssignment(), a temporary API I added to ease migration to ObjCObjectPointerType. Convert Sema::CheckAssignmentConstraints() to no longer depend on the temporary API. - Sema::ConvertDeclSpecToType(): Replace a couple FIXME's with an important comment/example. - Sema::GetTypeForDeclarator(): Get the protocol's from the interface, NOT the declspec (to support the following C typedef idiom: "typedef C<P> T; T *obj"). - Sema::ObjCQualifiedIdTypesAreCompatible(): Removed some dead code. - ASTContext::getObjCEncodingForTypeImpl(): Some minor cleanups. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76443 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-19Add include needed for MSVC.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76359 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-19Update CMakeDaniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76351 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-19Handle layout of non-virtual base classes.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76348 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-18Refactor field layout into a separate function.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76343 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-18Rename NextOffset to DataSize, which better matches the Itanium C++ ABIAnders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76339 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-18Migrate over to the record layout builder.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76338 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-18Re-enable 'test/SemaTemplate/temp_class_spec_neg.cpp', after commenting out ↵Argyrios Kyrtzidis
the cause of the crash. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76337 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-18More layout builder work.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76333 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-18Add a new ASTRecordLayoutBuilder class. Not used yet.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76330 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-18Revert r75641.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76327 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-18Fix typo from r76321.Steve Naroff
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76322 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-18Remove ObjCQualifiedInterfaceType:-)Steve Naroff
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76321 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-18Introduce a redecl_iterator in Decl class, so that we can do a "iterate over ↵Argyrios Kyrtzidis
all declarations of the same decl" without knowing the exact type. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76298 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-18Introduce the Redeclarable template class, which serves as a base type ↵Argyrios Kyrtzidis
defining the common interface for Decls that can be redeclared. Make FunctionDecl and VarDecl use it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76297 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-18Remove getFirstDeclaration/getLatestDeclaration from FunctionDecl and VarDecl.Argyrios Kyrtzidis
Their usefulness is questionable since redecl_iterator was introduced. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76275 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-18Remove ASTContext::getCanonicalDecl() and use Decl::getCanonicalDecl in its ↵Argyrios Kyrtzidis
place. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76274 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-18Move the functionality of ASTContext::getCanonicalDecl(), into a virtual ↵Argyrios Kyrtzidis
method Decl::getCanonicalDecl(). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76273 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-17Per offline discussion with Steve Naroff, add back Type::getAsXXXType() methodsTed Kremenek
until Doug Gregor's Type smart pointer code lands (or more discussion occurs). These methods just call the new Type::getAs<XXX> methods, so we still have reduced implementation redundancy. Having explicit getAsXXXType() methods makes it easier to set breakpoints in the debugger. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76193 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-17objc methods can't be an operand to callexpr.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76179 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-17Refactor code into a new CallExpr::getDirectCallee() method. Simplify someZhongxing Xu
code with the new method. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76164 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-17Replaced Type::getAsLValueReferenceType(), Type::getAsRValueReferenceType(), ↵Ted Kremenek
Type::getAsMemberPointerType(), Type::getAsTagType(), and Type::getAsRecordType() with their Type::getAs<XXX> equivalents. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76139 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-17Replace Type::getAsReferenceType() with Type::getAs<ReferenceType>().Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76132 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-16Add member template 'Type::getAs<T>', which converts a Type* to a respective T*.Ted Kremenek
This method is intended to eventually replace the individual Type::getAsXXXType<> methods. The motivation behind this change is twofold: 1) Reduce redundant implementations of Type::getAsXXXType() methods. Most of them are basically copy-and-paste. 2) By centralizing the implementation of the getAs<Type> logic we can more smoothly move over to Doug Gregor's proposed canonical type smart pointer scheme. Along with this patch: a) Removed 'Type::getAsPointerType()'; now clients use getAs<PointerType>. b) Removed 'Type::getAsBlockPointerTypE()'; now clients use getAs<BlockPointerType>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76098 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-16Move the source-level CFG from libAST to libAnalysis.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76092 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-16Cleanup a couple loops and improve a comment (based on feedback from Fariborz).Steve Naroff
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76078 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-16Remove ASTContext::isObjCObjectPointerType().Steve Naroff
Convert all clients to use the new predicate on Type. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76076 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-15Fixed a stinko which caused an ast-print test failure.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75861 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-15#ifdef'ed out -ast-print of destructors which causedFariborz Jahanian
a test failure, until figuring out what caused the failure. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75855 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-15Added ASTs to destructor decl AST for default destruction of object'sFariborz Jahanian
base/members. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75849 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-15Lexically order files in CMakeLists.txt files.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75832 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-15Implement the ObjC pseudo built-in types as clang "BuiltinType's". I say ↵Steve Naroff
pseudo built-in types, since Sema still injects a typedef for recognition (i.e. they aren't truly built-ins from a parser perspective). This removes the static data/methods on ObjCObjectPointerType while preserving the nice API (no need to fiddle with ASTContext:-). This patch also adds Type::isObjCBuiltinType(). This should be the last fairly large patch related to recrafting the ObjC type system. The follow-on patches should be fairly small. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75808 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-15Update for raw_fd_ostream API changes. raw_fd_ostream now has aDan Gohman
Force flag to control whether the case of opening an existing file is considered an error. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75802 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-14Added a FIXME and prevent crash when listingFariborz Jahanian
a dependent type in the ctor initializer-list. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75712 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-14Fixed a bug in building ctor-initializer AST.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75692 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-14Support data members of array type in defaultFariborz Jahanian
ctor-initializer AST build. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75662 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-14Moved a FIXME to where it was meant to be.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75651 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-14Introduce Type::isAnyPointerType() and convert all clients (suggested by Chris).Steve Naroff
I don't love the name, however it simplifies the code and is a worthwhile change. If/when we come up with a better name, we can do a search/replace. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75650 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-14Patch to build AST for ctor's initializer list according toFariborz Jahanian
semantics of order of construction [class.init]. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75649 91177308-0d34-0410-b5e6-96231b3b80d8