summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/ASTContext.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Vectors are not integer types, so the type system should not classifyDouglas Gregor2010-07-231-3/+3
| | | | | | | | | | | them as such. Type::is(Signed|Unsigned|)IntegerType() now return false for vector types, and new functions has(Signed|Unsigned|)IntegerRepresentation() cover integer types and vector-of-integer types. This fixes a bunch of latent bugs. Patch from Anton Yartsev! llvm-svn: 109229
* Patch to type match comparing Objective-C Classes which implement Fariborz Jahanian2010-07-191-1/+31
| | | | | | protocols (Radar 8191774). llvm-svn: 108758
* Reinstate the fix for PR7556. A silly use of isTrivial() wasDouglas Gregor2010-07-081-1/+4
| | | | | | suppressing copies of objects with trivial copy constructors. llvm-svn: 107857
* When printing statistics for the ASTContext, also print them for its ↵Douglas Gregor2010-07-071-0/+3
| | | | | | BumpPtrAllocator llvm-svn: 107790
* Fix a regression of a previous commit of mine (rdar://8158953).Argyrios Kyrtzidis2010-07-041-2/+26
| | | | | | | Some of the invariant checks for creating Record/Enum types don't hold true during PCH reading. Introduce more suitable ASTContext::getRecordType() and getEnumType(). llvm-svn: 107598
* Read/write more information of ASTContext for PCH. Overriden methods and ↵Argyrios Kyrtzidis2010-07-041-0/+10
| | | | | | instantiated-from information. llvm-svn: 107597
* Don't try to install the __[u]int128_t identifier if it is already installed ↵Argyrios Kyrtzidis2010-07-041-2/+2
| | | | | | | | | | by PCHReader. Currently, adding it to visible decls of a PCH'ed translation unit has no effect because adding visible decls before deserialization has no effect (the decls won't be visible). This will be fixed in a future commit; then it will force deserialization of visible decls, so avoid pointlessly installing it. llvm-svn: 107595
* Read/write specialization info of static data members for PCH.Argyrios Kyrtzidis2010-07-041-2/+3
| | | | llvm-svn: 107593
* Lazily declare default constructors. We now delay the construction ofDouglas Gregor2010-07-031-0/+5
| | | | | | | | | | | | | | | | | | declarations for implicit default constructors, copy constructors, copy assignment operators, and destructors. On a "simple" translation unit that includes a bunch of C++ standard library headers, we generate relatively few of these implicit declarations now: 4/159 implicit default constructors created 18/236 implicit copy constructors created 70/241 implicit copy assignment operators created 0/173 implicit destructors created And, on this translation unit, this optimization doesn't really provide any benefit. I'll do some more performance measurements soon, but this completes the implementation work for <rdar://problem/8151045>. llvm-svn: 107551
* Lazily declare implicit copy constructors.Douglas Gregor2010-07-021-0/+5
| | | | llvm-svn: 107543
* Lazily declare copy-assignment operators.Douglas Gregor2010-07-021-0/+5
| | | | llvm-svn: 107521
* Lazily declare the implicitly-declared destructor in a C++ class.Douglas Gregor2010-07-021-0/+7
| | | | llvm-svn: 107510
* Fully read/write CXXRecordDecl for PCH.Argyrios Kyrtzidis2010-07-021-2/+1
| | | | llvm-svn: 107475
* - Allow a typedef type to be read from PCH even if its decl is currently ↵Argyrios Kyrtzidis2010-07-021-37/+44
| | | | | | | | initializing. - Fix creation of TemplateSpecializationType. llvm-svn: 107471
* improve altivec vector bool/pixel support, patch by Anton YartsevChris Lattner2010-06-231-10/+15
| | | | | | with several tweaks by me. llvm-svn: 106619
* Patch to provide separate ASTs for multiple ObjC class extension Fariborz Jahanian2010-06-221-2/+4
| | | | | | declarations (implements radar 7928731). llvm-svn: 106597
* Change two static variables into instance variables of ASTContext. This ↵Ted Kremenek2010-06-181-3/+2
| | | | | | | | allows us to have multiple copies of ASTContext at the same time. llvm-svn: 106258
* Canonicalize template template parameters when canonicalizing aDouglas Gregor2010-06-161-3/+97
| | | | | | | template name that refers to such a parameter. It's amazing that this problem didn't surface earlier. Fixes PR7387. llvm-svn: 106147
* Revert r106099; it broke self-host.Douglas Gregor2010-06-161-4/+5
| | | | llvm-svn: 106100
* Added TemplateTypeParmType::getDecl().Abramo Bagnara2010-06-161-5/+4
| | | | llvm-svn: 106099
* Introduce Type::isIntegralOrEnumerationType(), to cover those placesDouglas Gregor2010-06-161-1/+1
| | | | | | | | | | in C++ that involve both integral and enumeration types. Convert all of the callers to Type::isIntegralType() that are meant to work with both integral and enumeration types over to Type::isIntegralOrEnumerationType(), to prepare to eliminate enumeration types as integral types. llvm-svn: 106071
* TemplateSpecializationType's isCurrentInstantiation bit can be derivedJohn McCall2010-06-131-12/+5
| | | | | | from its canonical type. llvm-svn: 105912
* Don't store ASTContext references in the TST nodes just to support profiling.John McCall2010-06-111-3/+5
| | | | llvm-svn: 105820
* Provide an Objective C mangling for wchar_t. Patch by Nico Weber!John McCall2010-06-111-0/+1
| | | | llvm-svn: 105818
* Split DependentNameType into two types. DependentNameType represents theJohn McCall2010-06-111-25/+50
| | | | | | | | | | | | | | case of an elaborated-type-specifier like 'typename A<T>::foo', and DependentTemplateSpecializationType represents the case of an elaborated-type-specifier like 'typename A<T>::template B<T>'. The TypeLoc representation of a DependentTST conveniently exactly matches that of an ElaboratedType wrapping a TST. Kill off the explicit rebuild methods for RebuildInCurrentInstantiation; the standard implementations work fine because the nested name specifier is computable in the newly-entered context. llvm-svn: 105801
* Tweak our handling of the notion of a standard conversion sequenceDouglas Gregor2010-06-091-0/+42
| | | | | | | | | | | | | being a subsequence of another standard conversion sequence. Instead of requiring exact type equality for the second conversion step, require type *similarity*, which is type equality with cv-qualifiers removed at all levels. This appears to match the behavior of EDG and VC++ (albeit not GCC), and feels more intuitive. Big thanks to John for the line of reasoning that supports this change: since cv-qualifiers are orthogonal to the second conversion step, we should ignore them in the type comparison. llvm-svn: 105678
* Fix memory leak in ASTContext where ASTRecordLayout objects involving C++ ↵Ted Kremenek2010-06-081-7/+10
| | | | | | | | | structures wouldn't have their associated memory destroyed when using a BumpPtrAllocator. These objects internally use a DenseMap. llvm-svn: 105659
* Alter the interface of GetTypeForDeclarator to return a TypeSourceInfo*.John McCall2010-06-041-0/+1
| | | | | | This is never null, but the associated type might be. llvm-svn: 105503
* Correctly align large arrays in x86-64. This fixes PR5599.Rafael Espindola2010-06-041-0/+9
| | | | llvm-svn: 105500
* Preserve more information from a block's original function declarator, if oneJohn McCall2010-06-041-1/+1
| | | | | | | was given. Remove some unnecessary accounting from BlockScopeInfo. Handle typedef'ed function types until such time as we decide not. llvm-svn: 105478
* Fixed Objective-C type encoding for bitfields for the GNU runtime to match ↵David Chisnall2010-06-041-36/+66
| | | | | | the encoding used by GCC. llvm-svn: 105451
* Fix 80-column.Fariborz Jahanian2010-05-271-1/+2
| | | | llvm-svn: 104847
* Objective-c++ IR gen.Fariborz Jahanian2010-05-271-0/+3
| | | | | | | | Flag synthesized struct decl. as non-empty so CXX side of ir gen does not skip its Null initialization. Fixes radar 8027844 for objc++'s collection statement. llvm-svn: 104837
* Move the relevant ASTContext member functions that deal with ↵Anders Carlsson2010-05-261-74/+0
| | | | | | ASTRecordLayoutBuilder into RecordLayoutBuilder.cpp. This matches the way we interact with other builder classes (CGRecordLayoutBuilder, VTableBuilder and VTTBuilder) and it also allows for making ASTRecordLayoutBuilder a private class without a header file. llvm-svn: 104671
* A type- or value-dependent expression cannot use bitfieldDouglas Gregor2010-05-241-0/+3
| | | | | | promotion. Fixes <rdar://problem/8020920>. llvm-svn: 104545
* Keep track of all of the class and function template's "common"Douglas Gregor2010-05-231-0/+10
| | | | | | | | pointers in the ASTContext, so that the folding sets stored inside them will be deallocated when the ASTContext is destroyed (under -disable-free). <rdar://problem/7998824>. llvm-svn: 104465
* Even though we don't unique VLA types, we still need to build aDouglas Gregor2010-05-231-2/+10
| | | | | | canonical type where the element type is canonical. Fixes PR7206. llvm-svn: 104461
* Support implicitly closing on 'this' in a block. Fixed PR7165.John McCall2010-05-201-13/+33
| | | | | | (the codegen works here, too, but that's annoying to test without execution) llvm-svn: 104202
* Adds support for ObjC++'s GC attribute on declaration ofFariborz Jahanian2010-05-191-0/+81
| | | | | | object variables and functions returning such objects. llvm-svn: 104168
* Teach the ObjC mangler to ignore member pointers just like gcc does.John McCall2010-05-171-0/+5
| | | | llvm-svn: 104001
* Teach ASTContext::getUnqualifiedArrayType() how to look throughDouglas Gregor2010-05-171-5/+14
| | | | | | | typedefs. As a drive-by, teach hit how to build VLA types, since those will eventually be supported in C++. llvm-svn: 103958
* Substantially alter the design of the Objective C type AST by introducingJohn McCall2010-05-151-101/+119
| | | | | | | | | | | | | | | | | | | | | ObjCObjectType, which is basically just a pair of one of {primitive-id, primitive-Class, user-defined @class} with a list of protocols. An ObjCObjectPointerType is therefore just a pointer which always points to one of these types (possibly sugared). ObjCInterfaceType is now just a kind of ObjCObjectType which happens to not carry any protocols. Alter a rather large number of use sites to use ObjCObjectType instead of ObjCInterfaceType. Store an ObjCInterfaceType as a pointer on the decl rather than hashing them in a FoldingSet. Remove some number of methods that are no longer used, at least after this patch. By simplifying ObjCObjectPointerType, we are now able to easily remove and apply pointers to Objective-C types, which is crucial for a certain kind of ObjC++ metaprogramming common in WebKit. llvm-svn: 103870
* Merged Elaborated and QualifiedName types.Abramo Bagnara2010-05-111-47/+18
| | | | llvm-svn: 103517
* Allocate most of DeclarationNamesTable using ASTContext's allcocator. The ↵Ted Kremenek2010-05-101-3/+0
| | | | | | | | only things that aren't allocated this way are the internal FoldingSets. llvm-svn: 103429
* Start converting pieces of DeclarationNameTable to be allocated using ↵Ted Kremenek2010-05-101-1/+6
| | | | | | | | | | ASTContext's allocator. While DeclarationNameTable doesn't leak, it uses 'malloc' too often. Start with having 'CXXLiteralOperatorNames' allocated using ASTContext's allocator and add a 'DoDestroy()' method to DeclarationNameTable that is called by ~ASTContext. llvm-svn: 103426
* Implement encoding of methods which have instantiatedFariborz Jahanian2010-05-071-0/+11
| | | | | | template arguments. llvm-svn: 103221
* When synthesizing Objective C records, give the synthetic fields publicJohn McCall2010-04-301-0/+8
| | | | | | | | access. Fixes an assertion. Fixes rdar://problem/7927811. Too lazy to reduce a test case. llvm-svn: 102776
* Revert "Fix for PR6953: per gcc, regparm and noreturn affect the ↵Daniel Dunbar2010-04-281-8/+13
| | | | | | compatibility of", it is breaking the builds of quite a few projects (emacs, dovecot, gnutar, bison). llvm-svn: 102501
* Fix for PR6953: per gcc, regparm and noreturn affect the compatibility ofEli Friedman2010-04-271-13/+8
| | | | | | | | | function types. This could potentially have unexpected side-effects, so look here if there are new regressions. llvm-svn: 102464
* More simplifications.Benjamin Kramer2010-04-271-17/+7
| | | | llvm-svn: 102447
OpenPOWER on IntegriCloud