Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reverse the ownership between DICompileUnit and DISubprogram #27658

Closed
adrian-prantl opened this issue Apr 8, 2016 · 2 comments
Closed

Reverse the ownership between DICompileUnit and DISubprogram #27658

adrian-prantl opened this issue Apr 8, 2016 · 2 comments
Assignees
Labels
bugzilla Issues migrated from bugzilla debuginfo

Comments

@adrian-prantl
Copy link
Collaborator

Bugzilla Link 27284
Resolution FIXED
Resolved on Apr 15, 2016 11:00
Version trunk
OS All
Attachments a python script that updates LLVM IR testcases to the new format
CC @adrian-prantl,@dwblaikie,@dexonsmith,@echristo,@joker-eph

Extended Description

Currently each Function points to a DISubprogram and DISubprogram has a scope field. For member functions the scope is a DICompositeType. DIScopes never point to the DICompileUnit to facilitate type uniquing.

Distinct DISubprograms (with isDefinition: true) are not part of the type hierarchy and cannot be uniqued. I'm proposing to remove the subprograms list from DICompileUnit and instead add a pointer to the owning compile unit to distinct DISubprograms. This would make it easy for ThinLTO to strip unneeded DISubprograms and their transitively referenced debug info.

Motivation

Materializing DISubprograms is currently the most expensive operation when doing a ThinLTO build of clang.

We want the DISubprogram to be stored in a separate Bitcode block (or the same block as the function body) so we can avoid having to expensively deserialize all DISubprograms together with the global metadata. If a function has been inlined into another subprogram we need to store a reference the block containing the inlined subprogram.

Implementation

Attached is a python script that updates LLVM IR testcases to the new format.

@adrian-prantl
Copy link
Collaborator Author

assigned to @adrian-prantl

@adrian-prantl
Copy link
Collaborator Author

r266445+r266446

@llvmbot llvmbot transferred this issue from llvm/llvm-bugzilla-archive Dec 10, 2021
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bugzilla Issues migrated from bugzilla debuginfo
Projects
None yet
Development

No branches or pull requests

1 participant