summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/Mangle.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Implement support for pack expansions whose pattern is a non-typeDouglas Gregor2011-01-031-1/+5
| | | | | | | | | | | | | | | | | template argument (described by an expression, of course). For example: template<int...> struct int_tuple { }; template<int ...Values> struct square { typedef int_tuple<(Values*Values)...> type; }; It also lays the foundation for pack expansions in an initializer-list. llvm-svn: 122751
* The -fshort-wchar option causes wchar_t to become unsigned, in addition to beingChris Lattner2010-12-251-1/+2
| | | | | | | 16-bits in size. Implement this by splitting WChar into two enums, like we have for char. This fixes a miscompmilation of XULRunner, PR8856. llvm-svn: 122558
* Introduce a new type, PackExpansionType, to capture types that areDouglas Gregor2010-12-201-0/+6
| | | | | | | | | | | | | | | | | | | | pack expansions, e.g. given template<typename... Types> struct tuple; template<typename... Types> struct tuple_of_refs { typedef tuple<Types&...> types; }; the type of the "types" typedef is a PackExpansionType whose pattern is Types&. This commit introduces support for creating pack expansions for template type arguments, as above, but not for any other kind of pack expansion, nor for any form of instantiation. llvm-svn: 122223
* Remove the TypesCompatibleExprClass AST node. Merge its functionality into ↵Francois Pichet2010-12-081-1/+0
| | | | | | BinaryTypeTraitExpr. llvm-svn: 121298
* Type traits intrinsic implementation: __is_base_of(T, U)Francois Pichet2010-12-071-0/+1
| | | | | | New AST node introduced: BinaryTypeTraitExpr; to be reused for more intrinsics. llvm-svn: 121074
* Rename CXXExprWithTemporaries -> ExprWithCleanups; there's no theoreticalJohn McCall2010-12-061-2/+2
| | | | | | reason this is limited to C++, and it's certainly not limited to temporaries. llvm-svn: 120996
* Simplify the ASTs by consolidating ObjCImplicitGetterSetterExpr and ↵John McCall2010-12-021-1/+0
| | | | | | | | ObjCPropertyRefExpr into the latter. llvm-svn: 120643
* Hide a bunch of symbols.Benjamin Kramer2010-11-251-2/+2
| | | | llvm-svn: 120153
* Refactoring of Diagnostic class.Argyrios Kyrtzidis2010-11-181-4/+2
| | | | | | | | | | | -Move the stuff of Diagnostic related to creating/querying diagnostic IDs into a new DiagnosticIDs class. -DiagnosticIDs can be shared among multiple Diagnostics for multiple translation units. -The rest of the state in Diagnostic object is considered related and tied to one translation unit. -Have Diagnostic point to the SourceManager that is related with. Diagnostic can now accept just a SourceLocation instead of a FullSourceLoc. -Reflect the changes to various interfaces. llvm-svn: 119730
* Change CXXNameMangler::mangleNeonVectorType to require the vector type to beBob Wilson2010-11-161-15/+13
| | | | | | | one of the special Neon types. We'll check for invalid Neon vectors when they are created, so there's no point in handling them when mangling. llvm-svn: 119299
* Use getTypeSize() method.Bob Wilson2010-11-161-1/+1
| | | | llvm-svn: 119297
* Add a new expression kind, OpaqueValueExpr, which is useful forJohn McCall2010-11-151-0/+3
| | | | | | | certain internal type-checking procedures as well as for representing certain implicitly-generated operations. Uses to follow. llvm-svn: 119289
* Use ASTContext::getTypeInfo to find the vector element size.Bob Wilson2010-11-121-13/+13
| | | | llvm-svn: 118899
* Add a separate NeonPolyVector kind to distinguish polynomial vector types.Bob Wilson2010-11-121-12/+22
| | | | | | Add support for mangling those types according to ARM's ABI. llvm-svn: 118898
* Add special-case mangling for Neon vector types.Bob Wilson2010-11-121-0/+38
| | | | llvm-svn: 118897
* Add a variant of GCC-style vector types for ARM NEON.Bob Wilson2010-11-101-2/+2
| | | | | | | | | NEON vector types need to be mangled in a special way to comply with ARM's ABI, similar to some of the AltiVec-specific vector types. This patch is mostly just renaming a bunch of "AltiVecSpecific" things, since they will no longer be specific to AltiVec. Besides that, it just adds the new "NeonVector" enum. llvm-svn: 118724
* Mangle std::nullptr_t as specified by the Itanium C++ ABI.Anders Carlsson2010-11-041-3/+2
| | | | llvm-svn: 118236
* Fix a crash mangling decayed val argument-typed function.Fariborz Jahanian2010-11-021-1/+3
| | | | | | // rdar: //8620510 and PR7666 llvm-svn: 118019
* Fix some bugs in local class mangling brought up in PR8355.John McCall2010-10-181-19/+21
| | | | | | Patch by Richard Smith! llvm-svn: 116752
* Eliminate usage of ObjCSuperExpr used forFariborz Jahanian2010-10-141-1/+0
| | | | | | | 'super' as receiver of property or a setter/getter methods. //rdar: //8525788 llvm-svn: 116483
* Define and implement CXXNoexceptExpr. Create it in Sema.Sebastian Redl2010-09-101-1/+2
| | | | llvm-svn: 113623
* Fix warnings caused by new CXXUuidofExprClass enumerator.Francois Pichet2010-09-081-1/+2
| | | | llvm-svn: 113444
* Implement ARM static local initialization guards, which are more compact thanJohn McCall2010-09-081-2/+2
| | | | | | Itanium guards and use a slightly different compiled-in API. llvm-svn: 113330
* No functional change. Replace Out << 'a' << 'b' with Out << "ab" and spellNick Lewycky2010-09-051-3/+3
| | | | | | David Vandevoorde's name correctly. llvm-svn: 113103
* Eliminate CXXBindReferenceExpr, which was used in a ton ofDouglas Gregor2010-09-021-4/+0
| | | | | | well-intentioned but completely unused code. llvm-svn: 112868
* Revert my user-defined literal commits - r1124{58,60,67} pendingAlexis Hunt2010-08-301-1/+0
| | | | | | some issues being sorted out. llvm-svn: 112493
* Implement C++0x user-defined string literals.Alexis Hunt2010-08-291-0/+1
| | | | | | | | | | The extra data stored on user-defined literal Tokens is stored in extra allocated memory, which is managed by the PreprocessorLexer because there isn't a better place to put it that makes sure it gets deallocated, but only after it's used up. My testing has shown no significant slowdown as a result, but independent testing would be appreciated. llvm-svn: 112458
* Detabify.Eli Friedman2010-08-221-3/+3
| | | | llvm-svn: 111768
* Mangle explicit template arguments in dependent or overloaded names.John McCall2010-08-201-1/+20
| | | | llvm-svn: 111591
* Contextual arity is a feature of mangling expressions; kill offJohn McCall2010-08-181-45/+19
| | | | | | | | mangleCallExpression. Also, operator names with unknown arity should be mangled as binary operators; this is actually covered by an oddly- positioned sentence in the ABI document. Fixes PR7891. llvm-svn: 111395
* Whoops. Don't fall through into the overload case when mangling aJohn McCall2010-08-171-2/+2
| | | | | | dependent call expression. llvm-svn: 111300
* Don't crash when mangling empty anonymous unions. We never actually *need*John McCall2010-08-051-1/+5
| | | | | | | these, but it's convenient to mangle them when deferring them (in the 99.99% case where it's not an anonymous union, of course). llvm-svn: 110381
* Mangle enum constant expressions. Fixes rdar://problem/8204122John McCall2010-07-241-0/+6
| | | | llvm-svn: 109315
* Fix mangling for static member variables of classes inside an extern "C"Eli Friedman2010-07-181-0/+4
| | | | | | | linkage specification. Not sure if this is the ideal fix, but I'm reasonably sure it's correct vs. gcc. llvm-svn: 108656
* After some discussion, the ABI list settled on a much more sensible manglingJohn McCall2010-07-151-6/+3
| | | | | | for string literals. llvm-svn: 108464
* Fix the mangling of template template arguments, which do not alwaysJohn McCall2010-07-141-3/+50
| | | | | | | | follow <name>; instead they follow <type>, which has <name> as a subset. Fixes PR7446. llvm-svn: 108326
* Remove a few mangling FIXMEs:John McCall2010-07-141-5/+0
| | | | | | | | - TSTs whose template is a template template parameter already work - we don't provide an imaginary type, so we can't mangle one - we don't need a generic FIXME for vendor type qualifiers llvm-svn: 108317
* Implement the standard mangling for array-subscript expressions, and implementJohn McCall2010-07-141-15/+180
| | | | | | | the current proposals from David Vandervoorde for new, delete, throw, typeid, imaginary literals, string literals, and null literals. llvm-svn: 108315
* Use isFunctionOrMethod for vars declared localllyFariborz Jahanian2010-06-301-1/+1
| | | | | | in method/blocks to decide not to mangle them. llvm-svn: 107309
* extern variable declared locally to objective-c++ methodFariborz Jahanian2010-06-301-1/+1
| | | | | | should not be mangled either. Fixes radar 8016412. llvm-svn: 107303
* Add function for mangling reference temporaries.Anders Carlsson2010-06-261-0/+9
| | | | llvm-svn: 106948
* Patch to correctly mangle block helper functionsFariborz Jahanian2010-06-241-4/+14
| | | | | | | when block literal is declared inside a ctor/dtor. Fixes radr 8096995. llvm-svn: 106700
* improve altivec vector bool/pixel support, patch by Anton YartsevChris Lattner2010-06-231-4/+12
| | | | | | with several tweaks by me. llvm-svn: 106619
* Add name mangling for address spaces. We use the vendor-extensionDouglas Gregor2010-06-141-0/+12
| | | | | | | mangling for types, where the <source-name> is ASxxx (xxx is the address-space number). llvm-svn: 105975
* Split DependentNameType into two types. DependentNameType represents theJohn McCall2010-06-111-14/+18
| | | | | | | | | | | | | | 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
* Correctly handle > 257 substitutions in a single mangling, and don't introduceJohn McCall2010-06-091-10/+8
| | | | | | | a spurious substitution for an unscoped dependent template-id after introducing a substitution for the scoped template-id. llvm-svn: 105699
* Correctly mangle static variables of anonymous struct/union type.Anders Carlsson2010-06-081-0/+44
| | | | llvm-svn: 105606
* Don't substitute 'St' for 'std' when the namespace is nested inside another ↵Anders Carlsson2010-06-021-9/+9
| | | | | | namespace. llvm-svn: 105330
* Correctly mangle unsigned integer literals where the high bit is set.Anders Carlsson2010-06-021-2/+4
| | | | llvm-svn: 105312
* Correctly mangle variadic functions that don't have any other parameters.Anders Carlsson2010-06-021-1/+2
| | | | llvm-svn: 105311
OpenPOWER on IntegriCloud