[PATCH] D77077: [clang] CodeGen: Make getOrEmitProtocol public for Swift
Arnold Schwaighofer via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Mar 30 15:17:14 PDT 2020
aschwaighofer marked an inline comment as done.
aschwaighofer added inline comments.
================
Comment at: clang/include/clang/CodeGen/CodeGenABITypes.h:148
+ llvm::function_ref<llvm::Constant *(const ObjCProtocolDecl *)>
+ createProtocolReference);
} // end namespace CodeGen
----------------
rjmccall wrote:
> I would call this `emitObjCProtocolObject` or something, and maybe say in the comment:
>
> > Get a pointer to a protocol object for the given declaration, emitting it if it hasn't already been emitted in this translation unit. Note that the ABI for emitting a protocol reference in code (e.g. for a `@protocol` expression) in most runtimes is not as simple as just materializing a pointer to this object.
>
> Can you explain the need for the callback? Are you expecting to use this for Swift-declared protocols by synthesizing an ObjC protocol declaration for them? I can see why you'd need a callback in that case.
> Can you explain the need for the callback? Are you expecting to use this for Swift-declared protocols by synthesizing an ObjC protocol declaration for them? I can see why you'd need a callback in that case.
The objective C protocol references other protocols in its inherited list. Swift has an internal list that keeps track of those protocols references and makes sure to initialized them for the debugger and also makes sure that the underlying protocol structure is emitted. The call back is to keep this list in sync.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D77077/new/
https://reviews.llvm.org/D77077
More information about the cfe-commits
mailing list