llvm-project/clang/test/CodeGenObjCXX
Saleem Abdulrasool 5a3e50a3e6 ObjC++: decorate ObjC interfaces in MSABI properly
`id` needs to be handled specially since it is a `TypedefType` which is
sugar for an `ObjCObjectPointerType` whose pointee is an
`ObjCObjectType` with base `BuiltinType::ObjCIdType` and no protocols
and the first level of pointer gets it own type implementation.  `Class`
is similar with the `ObjCClassType` as the base instead.

The qualifiers on the base type of the `ObjCObjectType` need to be
dropped because the innermost `mangleType` will handle the qualifiers
itself.

`id` is desugared to `struct objc_object *` which should be encoded as
`PAUobjc_object@@`.  `Class` is desugared to `struct objc_class *` which
should be encoded as `PAUobjc_class@@`.

We were previously applying an extra modifier `A` which will be handled
during the recursive call.

This now properly decorates interface types as well as `Class` and `id`.
This corrects the interactions between C++ and ObjC++ for the type
specifier decoration.

llvm-svn: 311617
2017-08-23 22:38:58 +00:00
..
Inputs
2007-10-03-MetadataPointers.mm
2010-08-04-Template.mm
2010-08-06-X.Y-syntax.mm
address-safety-attr.mm
arc-attrs-abi.mm Represent pass_object_size attrs in ExtParameterInfo 2017-02-24 02:49:47 +00:00
arc-attrs.mm Forward ns_consumed delegate arguments with a move. 2016-11-18 01:08:24 +00:00
arc-blocks.mm [test] Make Lit tests C++11 Compatible - Objective-C++ 2017-02-13 23:09:56 +00:00
arc-constexpr.mm [CodeGen][ObjC] Do not call objc_storeStrong when initializing a 2016-10-18 19:05:41 +00:00
arc-cxx11-init-list.mm CodeGen: try harder to make the CFString structure RW 2016-07-29 19:15:51 +00:00
arc-cxx11-member-init.mm
arc-exceptions.mm
arc-globals.mm Make '-disable-llvm-optzns' an alias for '-disable-llvm-passes'. 2016-12-23 00:23:01 +00:00
arc-indirect.mm test: fix test for release builds 2017-06-27 18:57:50 +00:00
arc-mangle.mm Mangle __unaligned in Itanium ABI 2017-06-02 07:14:34 +00:00
arc-move.mm Update for lifetime intrinsic signature change 2017-04-10 20:18:45 +00:00
arc-new-delete.mm Make '-disable-llvm-optzns' an alias for '-disable-llvm-passes'. 2016-12-23 00:23:01 +00:00
arc-pseudo-destructors.mm
arc-references.mm [ObjC] Fix lifetime markers of loop variable in EmitObjCForCollectionStmt [take 2] 2017-04-14 16:53:25 +00:00
arc-returns-inner-reference-ptr.mm
arc-special-member-functions.mm Remove custom handling of array copies in lambda by-value array capture and 2016-12-14 00:03:17 +00:00
arc-weak.mm
arc.mm Update for lifetime intrinsic signature change 2017-04-10 20:18:45 +00:00
auto-release-result-assert.mm
block-default-arg.mm [CodeGenObjCXX] Don't rematerialize default arguments of function 2016-05-02 21:52:57 +00:00
block-id.mm
block-in-template-inst.mm
block-nested-in-lambda.cpp [CodeGenObjCXX] Fix handling of blocks in lambda. 2016-05-04 18:40:33 +00:00
block-var-layout.mm
blocks.mm
boxing.mm ObjCBoxedExpr can't be evaluated by the constant expression evaluator. 2017-04-29 00:07:27 +00:00
catch-id-type.mm
copy.mm
copyable-property-object.mm
debug-info-block-capture-this.mm DebugInfo: Adapt to loss of DITypeRef in LLVM r267296 2016-04-23 21:08:27 +00:00
debug-info-cyclic.mm DebugInfo: pass alignment value only if it was forced 2016-10-20 00:13:19 +00:00
debug-info-line.mm
debug-info.mm
designated-initializers.mm
destroy.mm Make '-disable-llvm-optzns' an alias for '-disable-llvm-passes'. 2016-12-23 00:23:01 +00:00
encode.mm [test] Make Lit tests C++11 Compatible - Objective-C++ 2017-02-13 23:09:56 +00:00
exception-cxx.mm
exceptions-legacy.mm Update clang unittests for rL281586. 2016-09-15 06:31:30 +00:00
exceptions.mm
externally-initialized-selectors.mm
foreach-statement.mm
gc.mm
implementation-in-extern-c.mm
implicit-copy-assign-operator.mm
implicit-copy-constructor.mm Remove custom handling of array copies in lambda by-value array capture and 2016-12-14 00:03:17 +00:00
ivar-objects.mm
lambda-expressions.mm [CodeGen][ObjC] Use the type of the captured field of the enclosing 2017-02-14 06:46:55 +00:00
lambda-to-block.mm Fix lambda to block conversion in C++17 by avoiding copy elision for the 2017-04-06 12:53:43 +00:00
literals.mm Update for lifetime intrinsic signature change 2017-04-10 20:18:45 +00:00
lvalue-reference-getter.mm
mangle-blocks.mm
mangle.mm Fix mangled name of method with ns_consumed parameters. 2016-05-25 14:15:08 +00:00
message-reference.mm
message.mm
method-local-extern-mangle.mm
microsoft-abi-arc-param-order.mm ObjC++: decorate ObjC interfaces in MSABI properly 2017-08-23 22:38:58 +00:00
mrc-weak.mm
msabi-objc-types.mm ObjC++: decorate ObjC interfaces in MSABI properly 2017-08-23 22:38:58 +00:00
nested-ehlocation.mm
nrvo.mm
objc-container-subscripting-1.mm
objc-container-subscripting.mm
objc-weak.mm [Objective-C] C++ Classes with __weak Members non-POD Types when using -fobjc-weak 2017-03-29 17:31:42 +00:00
objfw-exceptions.mm [ObjC++] Use the correct EH personality in GNU mode 2017-04-01 17:59:01 +00:00
personality-abuse.mm
pr14474-gline-tables-only.mm
property-derived-to-base-conv.mm
property-dot-copy.mm
property-dot-reference.mm
property-lvalue-capture.mm
property-object-conditional-exp.mm
property-object-reference-1.mm
property-object-reference-2.mm Re-commit r282556, reverted in r282564, with a fix to CallArgList::addFrom to 2016-09-28 19:09:10 +00:00
property-object-reference.mm
property-objects.mm
property-reference.mm
refence-assign-write-barrier.mm
references.mm
return.mm Add -f[no-]strict-return flag that can be used to avoid undefined behaviour 2017-01-04 13:40:34 +00:00
rtti.mm
selector-expr-lvalue.mm
subst-sel.mm
unknown-anytype.mm
write-barrier-global-assign.mm