[PATCH] D80369: [DebugInfo][CallSites] Remove decl subprograms from 'retainedTypes:'

Adrian Prantl via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri May 22 15:34:13 PDT 2020


aprantl added a comment.

In D80369#2051278 <https://reviews.llvm.org/D80369#2051278>, @dblaikie wrote:

> @aprantl can you check here? I've attached two IR files for the ModuleDebugInfo.m test, before/after ('x' is before), stripped of the metadata numbers to make diffing easier - but I think you can still follow what's connected to what with reasonable guesswork. The point is these two function declarations end up in the retainedTypes list, and since the function declarations are emitted, so are the types used in their parameters, etc - but those types aren't reachable from anywhere else in the debug info metadata, so they won't be emitted into the final object file so far as I can see (because nothing looks at the function declarations in retainedTypes - only types).
>
> F11980002: x.ll <https://reviews.llvm.org/F11980002>
>
> F11980001: y.ll <https://reviews.llvm.org/F11980001>


These two files are for the C++ test, not the Objective-C one. Is the Objective-C case similar?
If there is no explicit CHECK line for the types anchored by the function calls, removing them is fine. However, for ObjC there is explicit code in `clang/lib/CodeGen/ObjectFilePCHContainerOperations.cpp` `DebugTypeVisitor::VisitFunctionDecl()` to emit the Objective-C methods. I do want to keep this functionality; it's needed for debugging Swift code with ObjC interoperability. I would be fine with manually adding everything created by this particular visitor to the retained types if that makes the separation easier.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D80369/new/

https://reviews.llvm.org/D80369





More information about the cfe-commits mailing list