[clang] [llvm] [DebugInfo] Place local ODR-uniqued types in decl DISubprograms (PR #142166)
David Blaikie via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 17 13:23:09 PDT 2025
dwblaikie wrote:
> > So maybe the solution is as simple as removing the "unique" from DISubprogram definitions, and the existing infrastructure will handle it? (maybe have to expand it to allow it to work for things with DISPFlagDefinition... )
>
> If I understand the idea behind #119001 right, the problem that caused the crashes after #75385 was the case of two distinct DISubporgrams having a local type that gets uniqued during LTO, and these parent subprograms both retain the reference to the same local type (It was described here [#75385 (comment)](https://github.com/llvm/llvm-project/pull/75385#issuecomment-2386684121)).
Yep, I think that's the original thing.
> So I was thinking in the opposite direction: should we force unique distinct definition DISubporgrams containing ODR-uniqued types, as well as it's done for declaration subprograms contained by ODR-uniqued types?
I'm suggesting more broadly: we should force-unique all DISubprograms (even if they don't contain odr-uniqued types), by making them not distinct anymore & generalizing the unquing infrastructure you quoted in langref.
This should address a broader class of problems - including, for instance, LTO where a subprogram is inlined/out of line in multiple files.
https://github.com/llvm/llvm-project/pull/142166
More information about the llvm-commits
mailing list