aboutsummaryrefslogtreecommitdiff
path: root/lib/AST
AgeCommit message (Collapse)Author
2009-07-30Fix type to be consistent with the rest of the code.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77560 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-30Add ability to layout the vtable pointer in trivial cases. I noticedMike Stump
that we would silently do bad things with virtual bases in the layout code, so, we just turn them off. When people do better things with them, we can turn them back on. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77556 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-29There's no point in going through the getAs<TagType> stuff to find the ↵Douglas Gregor
definition of a tag, since tags rarely have more than one or two declarations git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77546 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-29Make tag declarations redeclarable. This change has three purposes:Douglas Gregor
1) Allow the Index library (and any other interested client) to walk the set of declarations for a given tag (enum, union, class, whatever). At the moment, this information is not readily available. 2) Reduce our dependence on TagDecl::TypeForDecl being mapped down to a TagType (for which getDecl() will return the tag definition, if one exists). This property won't exist for class template partial specializations. 3) Make the canonical declaration of a TagDecl actually canonical, e.g., so that it does not change when the tag is defined. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77523 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-29Change uses of:Ted Kremenek
Type::getAsReferenceType() -> Type::getAs<ReferenceType>() Type::getAsRecordType() -> Type::getAs<RecordType>() Type::getAsPointerType() -> Type::getAs<PointerType>() Type::getAsBlockPointerType() -> Type::getAs<BlockPointerType>() Type::getAsLValueReferenceType() -> Type::getAs<LValueReferenceType>() Type::getAsRValueReferenceType() -> Type::getAs<RValueReferenceType>() Type::getAsMemberPointerType() -> Type::getAs<MemberPointerType>() Type::getAsReferenceType() -> Type::getAs<ReferenceType>() Type::getAsTagType() -> Type::getAs<TagType>() And remove Type::getAsReferenceType(), etc. This change is similar to one I made a couple weeks ago, but that was partly reverted pending some additional design discussion. With Doug's pending smart pointer changes for Types, it seemed natural to take this approach. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77510 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-29No longer need to keep base class offsets in the offsetFariborz Jahanian
table as it has its own place now. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77491 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-29[llvm up]Douglas Gregor
A template name can refer to a set of overloaded function templates. Model this in TemplateName, which can now refer to an OverloadedFunctionDecl that contains function templates. This removes an unspeakable hack in Sema::isTemplateName. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77488 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-29Use the new statement/expression profiling code to unique dependentDouglas Gregor
template arguments, as in template specialization types. This permits matching out-of-line definitions of members for class templates that involve non-type template parameters. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77462 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-29Code refactoring to define getCXXRecordDeclForPointerTypeFariborz Jahanian
and use it in several places. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77411 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-28Some minor cleanups, thanks Chris.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77402 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-28Some style fixes, thanks Chris.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77400 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-28Refactor the code that produces a TemplateSpecializationType, so thatDouglas Gregor
canonicalization for dependent TemplateSpecializationTypes occurs within ASTContext::getTemplateSpecializationType. Also, move template argument canonicalization into ASTContext::getCanonicalTemplateArgument. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77388 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-28remove extraneous bracesChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77386 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-28Add a field for C++ specific data to ASTRecordLayout. Use it to store the ↵Anders Carlsson
non-virtual size and alignment + base offsets. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77352 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-28fix PR4633: cast to void should silence the 'unused expression' warning.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77344 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-28Fix a typo in a commentDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77324 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-28Profiling the pointer of a canonical type is sufficient to uniquely identify ↵Douglas Gregor
the type git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77321 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-28Finish profile support for statements.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77320 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-28Complete profile support for C++ and Objective-C expressionsDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77318 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-28CallExpr's SubExprs sometimes were allocated in the wrong place.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77302 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-28Reimplement QualifierSet using a single word, as requested by dgregor.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77299 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-28Implement ObjCMethodDecl::getCanonicalDecl().Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77298 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-28-Add ObjCCategoryImplDecl::getCategoryClass() which returns the category ↵Argyrios Kyrtzidis
interface decl. -Correct ObjCMethodDecl::getNextRedeclaration(); A method in a ObjCCategoryImplDecl should point to a method in the associated ObjCCategoryDecl, not the ObjCInterfaceDecl. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77297 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-28Use ObjCImplDecl in place of ObjCCategoryImplDecl/ObjCImplementationDecl.Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77296 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-28Make longjmp a real builtin.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77291 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-28Add a Profile function for statements so that we can (eventually) determineDouglas Gregor
when statements and expressions are equivalent. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77284 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-27Ensure we can work through typedefs.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77265 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-27Add builtin knowledge about longjmp being noreturn. Add printing forMike Stump
the noreturn attribute. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77253 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-27Make ObjCImplDecl inherit from ObjCContainerDecl.Argyrios Kyrtzidis
ObjCContainerDecl now is the root class for objc decls that contain methods. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77235 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-27Fix PR4624.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77176 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-25Preserve qualifiers.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77097 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-25Refactor ObjCImplDecl::getInstanceMethod/getClassMethod into oneArgyrios Kyrtzidis
ObjCImplDecl::getMethod. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77094 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-25Refactor ObjCInterfaceDecl::lookupInstanceMethod/lookupClassMethod into oneArgyrios Kyrtzidis
ObjCInterfaceDecl::lookupMethod. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77093 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-25Refactor ObjCProtocolDecl::lookupInstanceMethod/lookupClassMethod into oneArgyrios Kyrtzidis
ObjCProtocolDecl::lookupMethod. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77092 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-25Refactor ObjCContainerDecl::getInstanceMethod/getClassMethod into oneArgyrios Kyrtzidis
ObjCContainerDecl::getMethod. Avoids code duplication. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77091 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-25Add noreturn as a type attribute, handle printing for them and handleMike Stump
calls to noreturn function pointers when CFG building. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77089 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-25ir-gen for non-virtual base class initializationFariborz Jahanian
in constructors. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77087 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-25Some code refactoring per Daniel's feedback.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77030 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-24Template instantiation for static data members that are defined out-of-line.Douglas Gregor
Note that this also fixes a bug that affects non-template code, where we were not treating out-of-line static data members are "file-scope" variables, and therefore not checking their initializers. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77002 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-24More work toward initialization of objectsFariborz Jahanian
in constructors. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76980 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-24Allow front-end 'isa' access on object's of type 'id'.Steve Naroff
Enhance test case to cover 'isa' access on interface types (clang produces an error, GCC produces a warning). Still need back-end CodeGen for ObjCIsaExpr. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76979 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-23This patch fixes the implementations of the __has_trivial_destructorDouglas Gregor
and __has_trivial_constructor builtin pseudo-functions and additionally implements __has_trivial_copy and __has_trivial_assign, from John McCall! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76916 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-23Diagnose when base classes and members to be intializedFariborz Jahanian
with constructors don't have a matching constructor. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76913 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-23Clean up the ActOnTag action, so that there is only a single entryDouglas Gregor
point that covers templates and non-templates. This should eliminate the flood of warnings I introduced yesterday. Removed the ActOnClassTemplate action, which is no longer used. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76881 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-23Remove a bunch of FIXME's related to ObjC type checking.Steve Naroff
- Move Sema::ObjCQualifiedIdTypesAreCompatible(), Sema::QualifiedIdConformsQualifiedId(), and a couple helper functions to ASTContext. - Change ASTContext::canAssignObjCInterfaces() to use ASTContext:: ObjCQualifiedIdTypesAreCompatible(). - Tweak several test cases to accommodate the new/improved type checking. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76830 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-23Add constructor used to initialize base/member inFariborz Jahanian
CXXBaseOrMemberInitializer AST node. Needed by its clients to do the initialization. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76826 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-22Fix some memory allocation/deallocation issuesDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76783 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-22Fix a nasty little use-after-free bug.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76779 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-22Improved on performance of the algorithm for proper ordering ofFariborz Jahanian
ctor's initialization of bases and fields. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76776 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-22Use isa instead of dyn_cast for conditionals.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76771 91177308-0d34-0410-b5e6-96231b3b80d8