llvm-project/clang/lib/AST
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
..
APValue.cpp Re-commit r289252 and r289285, and fix PR31374 2016-12-15 08:09:08 +00:00
ASTConsumer.cpp Move LocInfoType from Sema to AST. 2016-02-01 17:42:01 +00:00
ASTContext.cpp [OpenCL] Allow targets to select address space per type 2017-08-15 09:38:18 +00:00
ASTDiagnostic.cpp Added LLVM_FALLTHROUGH to address warning: this statement may fall through. NFC. 2017-06-03 06:31:42 +00:00
ASTDumper.cpp Fix mangling for dependent "type { expr-list }" expressions, and add mangling for designated initializers matching recent cxx-abi-dev discussion. 2017-08-23 22:12:08 +00:00
ASTImporter.cpp PR19668, PR23034: Fix handling of move constructors and deleted copy 2017-08-16 01:49:53 +00:00
ASTStructuralEquivalence.cpp [Modules] Implement ODR-like semantics for tag types in C/ObjC 2017-07-01 00:06:47 +00:00
ASTTypeTraits.cpp Teach clang-query to dump types. I couldn't find any existing tests for clang-query's dumping functionality. =( 2016-11-02 23:57:18 +00:00
AttrImpl.cpp [NFC] Header cleanup 2016-07-18 19:02:11 +00:00
CMakeLists.txt [analyzer] Make StmtDataCollector customizable 2017-08-23 16:28:26 +00:00
CXXABI.h Remove C++ default arg side table for MS ABI ctor closures 2016-11-23 16:51:30 +00:00
CXXInheritance.cpp [index] Avoid one more crash caused by infinite recursion that happens when 2017-05-18 18:06:07 +00:00
Comment.cpp [AST] Look through attribute type locs when searching for function type 2017-04-26 12:46:27 +00:00
CommentBriefParser.cpp [NFC] Header cleanup 2016-07-18 19:02:11 +00:00
CommentCommandTraits.cpp
CommentLexer.cpp Fix 'unknown documentation command' warning ranges 2016-10-25 10:06:11 +00:00
CommentParser.cpp [cleanup] Remove excessive padding from TextTokenRetokenizer::Position 2016-09-20 18:32:48 +00:00
CommentSema.cpp -Wdocumentation should not check the @returns command for Objective-C 2017-04-26 13:09:28 +00:00
DataCollection.cpp [analyzer] Make StmtDataCollector customizable 2017-08-23 16:28:26 +00:00
Decl.cpp [AST] Cache intermediate visibility/linkage results 2017-08-09 04:12:17 +00:00
DeclBase.cpp [modules ts] Improve merging of module-private declarations. 2017-07-05 07:47:11 +00:00
DeclCXX.cpp PR19668, PR23034: Fix handling of move constructors and deleted copy 2017-08-16 01:49:53 +00:00
DeclFriend.cpp [TrailingObjects] Convert Decl* classes. 2015-12-29 22:13:13 +00:00
DeclGroup.cpp Retire llvm::alignOf in favor of C++11 alignof. 2016-10-20 14:27:22 +00:00
DeclObjC.cpp [ObjC] Pick a 'readwrite' property when synthesizing ambiguous 2017-07-13 11:06:22 +00:00
DeclOpenMP.cpp [OPENMP] Fix for PR31416: Clang crashes on OMPCapturedExpr during source 2016-12-20 16:51:02 +00:00
DeclPrinter.cpp Print enum constant values using the original source formatting 2017-08-17 13:41:55 +00:00
DeclTemplate.cpp Add a destruct-on-exit function to ASTContext. 2017-02-14 05:37:36 +00:00
DeclarationName.cpp [ASTPrinter] Print nested name specifiers for out-of-line functions 2017-04-11 16:46:03 +00:00
Expr.cpp Allow the target field of a CK_ToUnion to be more easily recovered. 2017-08-15 21:42:47 +00:00
ExprCXX.cpp PR33489: A function-style cast to a deduced class template specialization type is type-dependent if it can't be resolved due to a type-dependent argument. 2017-08-11 02:04:19 +00:00
ExprClassification.cpp [coroutines] Allow co_await and co_yield expressions that return an lvalue to compile 2017-06-15 19:43:36 +00:00
ExprConstant.cpp PR34161: support evaluation of 'void()' expressions in C++14 onwards. 2017-08-17 19:35:50 +00:00
ExprObjC.cpp Retire llvm::alignOf in favor of C++11 alignof. 2016-10-20 14:27:22 +00:00
ExternalASTMerger.cpp [ExternalASTMerger] Import Objective-C classes 2017-07-25 19:54:22 +00:00
ExternalASTSource.cpp Modular Codegen: Support homing debug info for types in modular objects 2017-04-11 21:13:37 +00:00
InheritViz.cpp
ItaniumCXXABI.cpp Remove C++ default arg side table for MS ABI ctor closures 2016-11-23 16:51:30 +00:00
ItaniumMangle.cpp Fix mangling for dependent "type { expr-list }" expressions, and add mangling for designated initializers matching recent cxx-abi-dev discussion. 2017-08-23 22:12:08 +00:00
Linkage.h Use unsigned instead of an enum for map keys 2017-08-09 21:20:41 +00:00
Mangle.cpp [AST/ObjC] Make ObjCCategoryImplDecl consistent with ObjCCategoryDecl and use the category name as its DeclName 2017-03-07 09:26:07 +00:00
MicrosoftCXXABI.cpp Remove C++ default arg side table for MS ABI ctor closures 2016-11-23 16:51:30 +00:00
MicrosoftMangle.cpp ObjC++: decorate ObjC interfaces in MSABI properly 2017-08-23 22:38:58 +00:00
NSAPI.cpp [OpenCL] Correct ndrange_t implementation 2017-02-16 12:27:47 +00:00
NestedNameSpecifier.cpp Added LLVM_FALLTHROUGH to address warning: this statement may fall through. NFC. 2017-06-03 06:31:42 +00:00
ODRHash.cpp [ODRHash] Diagnose differing template parameters. 2017-08-23 02:43:59 +00:00
OpenMPClause.cpp [OPENMP] Codegen for 'in_reduction' clause. 2017-07-27 13:20:36 +00:00
ParentMap.cpp [arcmt/objcmt] Fix ParentMap crash with invalid code. 2016-07-14 20:21:16 +00:00
RawCommentList.cpp AST: Improve a couple of comments and cast unused values to void 2016-10-16 20:12:42 +00:00
RecordLayout.cpp [RecordLayout] Use an ASTVector instead of using a separate pointer and counter 2016-05-24 18:10:50 +00:00
RecordLayoutBuilder.cpp [clang] Change the condition of unnecessary packed warning 2017-08-01 21:41:39 +00:00
SelectorLocationsKind.cpp
Stmt.cpp [OPENMP] Check DSA for variables captured by value. 2017-05-15 16:26:15 +00:00
StmtCXX.cpp [coroutines] Add serialization/deserialization of coroutines 2017-07-25 18:01:49 +00:00
StmtDataCollectors.inc [analyzer] Make StmtDataCollector customizable 2017-08-23 16:28:26 +00:00
StmtIterator.cpp [ptr-traits] Stop using two bogus types as stand-ins for flags 2015-12-30 02:51:00 +00:00
StmtObjC.cpp Retire llvm::alignOf in favor of C++11 alignof. 2016-10-20 14:27:22 +00:00
StmtOpenMP.cpp [OPENMP] Codegen for 'task_reduction' clause. 2017-07-25 15:53:26 +00:00
StmtPrinter.cpp Print enum constant values using the original source formatting 2017-08-17 13:41:55 +00:00
StmtProfile.cpp Fix mangling for dependent "type { expr-list }" expressions, and add mangling for designated initializers matching recent cxx-abi-dev discussion. 2017-08-23 22:12:08 +00:00
StmtViz.cpp
TemplateBase.cpp [AST] Give TemplateArgumentLoc a constexpr ctor. 2017-01-30 18:32:46 +00:00
TemplateName.cpp Annotate dump() methods with LLVM_DUMP_METHOD, addressing Richard Smith r259192 post commit comment. 2016-01-29 19:38:18 +00:00
Type.cpp [AST] Cache intermediate visibility/linkage results 2017-08-09 04:12:17 +00:00
TypeLoc.cpp [OpenCL] Correct ndrange_t implementation 2017-02-16 12:27:47 +00:00
TypePrinter.cpp [AArch64] Add support for __builtin_ms_va_list on aarch64 2017-07-17 20:49:45 +00:00
VTTBuilder.cpp
VTableBuilder.cpp CodeGen: New vtable group representation: struct of vtable arrays. 2016-12-13 20:40:39 +00:00