forked from OSchip/llvm-project
5a3e50a3e6
`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 |
||
---|---|---|
.. | ||
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 | ||
arc-attrs.mm | ||
arc-blocks.mm | ||
arc-constexpr.mm | ||
arc-cxx11-init-list.mm | ||
arc-cxx11-member-init.mm | ||
arc-exceptions.mm | ||
arc-globals.mm | ||
arc-indirect.mm | ||
arc-mangle.mm | ||
arc-move.mm | ||
arc-new-delete.mm | ||
arc-pseudo-destructors.mm | ||
arc-references.mm | ||
arc-returns-inner-reference-ptr.mm | ||
arc-special-member-functions.mm | ||
arc-weak.mm | ||
arc.mm | ||
auto-release-result-assert.mm | ||
block-default-arg.mm | ||
block-id.mm | ||
block-in-template-inst.mm | ||
block-nested-in-lambda.cpp | ||
block-var-layout.mm | ||
blocks.mm | ||
boxing.mm | ||
catch-id-type.mm | ||
copy.mm | ||
copyable-property-object.mm | ||
debug-info-block-capture-this.mm | ||
debug-info-cyclic.mm | ||
debug-info-line.mm | ||
debug-info.mm | ||
designated-initializers.mm | ||
destroy.mm | ||
encode.mm | ||
exception-cxx.mm | ||
exceptions-legacy.mm | ||
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 | ||
ivar-objects.mm | ||
lambda-expressions.mm | ||
lambda-to-block.mm | ||
literals.mm | ||
lvalue-reference-getter.mm | ||
mangle-blocks.mm | ||
mangle.mm | ||
message-reference.mm | ||
message.mm | ||
method-local-extern-mangle.mm | ||
microsoft-abi-arc-param-order.mm | ||
mrc-weak.mm | ||
msabi-objc-types.mm | ||
nested-ehlocation.mm | ||
nrvo.mm | ||
objc-container-subscripting-1.mm | ||
objc-container-subscripting.mm | ||
objc-weak.mm | ||
objfw-exceptions.mm | ||
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 | ||
property-object-reference.mm | ||
property-objects.mm | ||
property-reference.mm | ||
refence-assign-write-barrier.mm | ||
references.mm | ||
return.mm | ||
rtti.mm | ||
selector-expr-lvalue.mm | ||
subst-sel.mm | ||
unknown-anytype.mm | ||
write-barrier-global-assign.mm |