mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-13 14:46:53 +00:00
4eeaa0da04
Currently each Function points to a DISubprogram and DISubprogram has a scope field. For member functions the scope is a DICompositeType. DIScopes point to the DICompileUnit to facilitate type uniquing. Distinct DISubprograms (with isDefinition: true) are not part of the type hierarchy and cannot be uniqued. This change removes the subprograms list from DICompileUnit and instead adds 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. Attached to https://llvm.org/bugs/show_bug.cgi?id=27284 is a python script that updates LLVM IR testcases to the new format. http://reviews.llvm.org/D19034 <rdar://problem/25256815> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266446 91177308-0d34-0410-b5e6-96231b3b80d8 |
||
---|---|---|
.. | ||
AArch64 | ||
AMDGPU | ||
PowerPC | ||
X86 | ||
2004-05-13-DontUnrollTooMuch.ll | ||
2005-03-06-BadLoopInfoUpdate.ll | ||
2006-08-24-MultiBlockLoop.ll | ||
2007-04-16-PhiUpdate.ll | ||
2007-05-05-UnrollMiscomp.ll | ||
2007-05-09-UnknownTripCount.ll | ||
2007-11-05-Crash.ll | ||
2011-08-08-PhiUpdate.ll | ||
2011-08-09-IVSimplify.ll | ||
2011-08-09-PhiUpdate.ll | ||
2011-10-01-NoopTrunc.ll | ||
2012-04-09-unroll-indirectbr.ll | ||
basic.ll | ||
convergent.ll | ||
ephemeral.ll | ||
full-unroll-bad-cost.ll | ||
full-unroll-crashers.ll | ||
full-unroll-heuristics-2.ll | ||
full-unroll-heuristics-cmp.ll | ||
full-unroll-heuristics-phi-prop.ll | ||
full-unroll-heuristics.ll | ||
high-cost-trip-count-computation.ll | ||
ignore-annotation-intrinsic-cost.ll | ||
loop-remarks.ll | ||
nsw-tripcount.ll | ||
partial-unroll-const-bounds.ll | ||
partial-unroll-optsize.ll | ||
pr10813.ll | ||
pr11361.ll | ||
pr14167.ll | ||
pr18861.ll | ||
pr27157.ll | ||
rebuild_lcssa.ll | ||
runtime-loop1.ll | ||
runtime-loop2.ll | ||
runtime-loop3.ll | ||
runtime-loop4.ll | ||
runtime-loop5.ll | ||
runtime-loop.ll | ||
scevunroll.ll | ||
shifted-tripcount.ll | ||
tripcount-overflow.ll | ||
unloop.ll | ||
unroll-cleanup.ll | ||
unroll-pragmas-disabled.ll | ||
unroll-pragmas.ll | ||
update-loop-info-in-subloops.ll |