llvm-project/clang/lib/Lex
Akira Hatanaka 7275da0f2e [ObjC] Allow declaring __strong pointer fields in structs in Objective-C
ARC mode.

Declaring __strong pointer fields in structs was not allowed in
Objective-C ARC until now because that would make the struct non-trivial
to default-initialize, copy/move, and destroy, which is not something C
was designed to do. This patch lifts that restriction.

Special functions for non-trivial C structs are synthesized that are
needed to default-initialize, copy/move, and destroy the structs and
manage the ownership of the objects the __strong pointer fields point
to. Non-trivial structs passed to functions are destructed in the callee
function.

rdar://problem/33599681

Differential Revision: https://reviews.llvm.org/D41228

llvm-svn: 326307
2018-02-28 07:15:55 +00:00
..
CMakeLists.txt
HeaderMap.cpp Use StringRef for MemoryBuffer identifier API (NFC) 2016-10-01 16:38:28 +00:00
HeaderSearch.cpp [Lexer] Support adding working directory to relative search dir for #include shortening in HeaderSearch. 2018-01-29 13:21:23 +00:00
Lexer.cpp [Lex] Avoid out-of-bounds dereference in LexAngledStringLiteral. 2018-01-12 18:54:35 +00:00
LiteralSupport.cpp [Lex] Fix handling numerical literals ending with ' and signed exponent. 2018-02-06 22:39:25 +00:00
MacroArgs.cpp Clean up use of C allocation functions 2018-02-21 02:02:39 +00:00
MacroInfo.cpp [Lex] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-12-04 23:16:21 +00:00
ModuleMap.cpp Make module use diagnostics refer to the top-level module 2018-02-24 06:54:09 +00:00
PPCaching.cpp [Lex] Fix crash on code completion in comment in included file. 2018-01-19 23:41:47 +00:00
PPCallbacks.cpp
PPConditionalDirectiveRecord.cpp Switch PPCallbacks to take the new MacroDefinition instead of MacroDirective*, in order to preserve full information on module macro expansion. 2015-05-04 03:15:40 +00:00
PPDirectives.cpp [Modules] Extend -fmodule-name semantic for frameworks with private modules 2018-02-16 00:12:57 +00:00
PPExpressions.cpp Keep the IdentifierInfo in the Token for alternative operator keyword 2017-07-14 09:23:40 +00:00
PPLexerChange.cpp [Lex] Fix crash on code completion in comment in included file. 2018-01-19 23:41:47 +00:00
PPMacroExpansion.cpp [ObjC] Allow declaring __strong pointer fields in structs in Objective-C 2018-02-28 07:15:55 +00:00
PTHLexer.cpp Re-land: "[Support] Replace HashString with djbHash." 2018-02-26 15:16:42 +00:00
Pragma.cpp [modules] Fix incorrect diagnostic mapping computation when a module changes 2018-02-09 01:15:13 +00:00
PreprocessingRecord.cpp [PCH] Serialize skipped preprocessor ranges 2018-01-15 19:14:16 +00:00
Preprocessor.cpp [CodeComplete] Fix completion in the middle of idents in macro calls 2018-01-22 17:18:28 +00:00
PreprocessorLexer.cpp [Lex] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-12-04 23:16:21 +00:00
ScratchBuffer.cpp [Lex] Use WritableMemoryBuffer in ScratchBuffer.cpp 2018-01-11 10:43:45 +00:00
TokenConcatenation.cpp Now that C++17 is official (https://www.iso.org/standard/68564.html), start changing the C++1z terminology over to C++17. NFC intended, these are all mechanical changes. 2017-12-04 20:27:34 +00:00
TokenLexer.cpp [Lex] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-12-08 22:39:26 +00:00
UnicodeCharSets.h