summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/ASTContext.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Warn if class object does not implement qualifiedFariborz Jahanian2010-08-091-4/+4
| | | | | | id's protocols. Fixes radar 8154220. llvm-svn: 110583
* Allow reference binding of a reference of Objective-C object type toDouglas Gregor2010-08-071-0/+6
| | | | | | | | an lvalue of another, compatible Objective-C object type (e.g., a subclass). Introduce a new initialization sequence step kind to describe this binding, along with a new cast kind. Fixes PR7741. llvm-svn: 110513
* Introduce implicit conversions between AltiVec vectors and GCCDouglas Gregor2010-08-061-4/+23
| | | | | | vectors, from Anton Yartsev! llvm-svn: 110437
* Compute width/align of objc builtin types (id, etc)Fariborz Jahanian2010-08-021-0/+6
| | | | | | for radar 8258797. llvm-svn: 110047
* Change the name to something less terrible; suggestion by Doug. No ↵Argyrios Kyrtzidis2010-07-291-1/+1
| | | | | | functionality change. llvm-svn: 109797
* Weak references and variables that are not definitions are not required for ↵Argyrios Kyrtzidis2010-07-291-0/+7
| | | | | | early codegen/deserialization. llvm-svn: 109796
* Merge PCHWriterDecl.cpp's isRequiredDecl and ↵Argyrios Kyrtzidis2010-07-291-0/+160
| | | | | | | | | | | | | | | CodeGenModule::MayDeferGeneration into a new function, DeclIsRequiredFunctionOrFileScopedVar. This is essentially a CodeGen predicate that is also needed by the PCH mechanism to determine whether a decl needs to be deserialized during PCH loading for codegen purposes. Since this logic is shared by CodeGen and the PCH mechanism, move it to the ASTContext, thus CodeGenModule's GetLinkageForFunction/GetLinkageForVariable and the GVALinkage enum is moved out of CodeGen. This fixes current (and avoids future) codegen-from-PCH bugs. llvm-svn: 109784
* Allow a looser form of compatibility checking (which ignoresDouglas Gregor2010-07-291-13/+59
| | | | | | | qualifiers) when checking a K&R function definition against a previous prototype. Fixes <rdar://problem/8193107>. llvm-svn: 109751
* Make ASTContext always use the BumpPtrAllocator.Douglas Gregor2010-07-251-51/+15
| | | | llvm-svn: 109375
* 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
OpenPOWER on IntegriCloud