[PATCH] D33614: Cloning: Fix debug info cloning

Gor Nishanov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri May 26 19:25:15 PDT 2017


GorNishanov added a comment.

In https://reviews.llvm.org/D33614#766379, @dblaikie wrote:

> The assertion is that, in the presence of a separate declaration (eg: a member function that is a coroutine - so the member variable gets a declaration (this is about the only time LLVM has/uses a separate declaration for a function/subprogram in the debug info) and models an out of line definition (even if the definition is in-line)) that if there is a linkage name for the declaration, then it's the same as the linkage name for the definition.
>
> This seems pretty wrong for coroutines where the debug info looks like it's going to have 3-4 functions, with different mangled names, all that claim to be an implementation of the same declaration? Their mangled names won't match the declaration anyway...
>
> I think maybe, it'd be better to drop the linkage name when cloning. (or use the linkage name of the clone - and change/relax the assertion) It won't be better in the end - the debug info would still have multiple definitions referring to the same declaration and if the declaration has a linkage name it'll be right for at most one of those functions and wrong for the rest. But at least the IR won't be /as/ wrong... ish.


Something like this?

Replace:

  SP->getName(), NewFunc->getName()  (rL302576 way)

or

  SP->getName(), SP->getLinkageName() (current patch way)

with

  NewFunc->getName(), NewFunc->getName(),  (dblakie way?)


https://reviews.llvm.org/D33614





More information about the llvm-commits mailing list