llvm/test/Transforms/GVN
Adrian Prantl 4eeaa0da04 [PR27284] Reverse the ownership between DICompileUnit and DISubprogram.
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
2016-04-15 15:57:41 +00:00
..
2007-07-25-DominatedLoop.ll
2007-07-25-InfiniteLoop.ll
2007-07-25-Loop.ll
2007-07-25-NestedLoop.ll
2007-07-25-SinglePredecessor.ll
2007-07-26-InterlockingLoops.ll
2007-07-26-NonRedundant.ll
2007-07-26-PhiErasure.ll
2007-07-30-PredIDom.ll
2007-07-31-NoDomInherit.ll
2007-07-31-RedundantPhi.ll
2008-02-12-UndefLoad.ll
2008-02-13-NewPHI.ll
2008-07-02-Unreachable.ll
2008-12-09-SelfRemove.ll
2008-12-12-RLE-Crash.ll
2008-12-14-rle-reanalyze.ll
2008-12-15-CacheVisited.ll
2009-01-21-SortInvalidation.ll
2009-01-22-SortInvalidation.ll
2009-02-17-LoadPRECrash.ll
2009-03-10-PREOnVoid.ll [opaque pointer type] Add textual IR support for explicit type parameter for global aliases 2015-09-11 03:22:04 +00:00
2009-06-17-InvalidPRE.ll
2009-07-13-MemDepSortFail.ll
2009-11-12-MemDepMallocBitCast.ll
2010-03-31-RedundantPHIs.ll
2010-05-08-OneBit.ll
2010-11-13-Simplify.ll
2011-04-27-phioperands.ll
2011-06-01-NonLocalMemdepMiscompile.ll
2011-07-07-MatchIntrinsicExtract.ll
2011-09-07-TypeIdFor.ll
2012-05-22-PreCrash.ll
assume-equal.ll Fix for two constant propagation problems in GVN with the assume intrinsic 2016-01-21 21:32:35 +00:00
atomic.ll
basic-undef-test.ll
basic.ll [PM] Port GVN to the new pass manager, wire it up, and teach a couple of 2016-03-11 08:50:55 +00:00
big-endian.ll [GVN] Fix handling of sub-byte types in big-endian mode 2016-04-07 15:45:02 +00:00
bitcast-of-call.ll
br-identical.ll GVN: If a branch has two identical successors, we cannot declare either dead. 2015-06-25 18:32:02 +00:00
calloc-load-removal.ll
calls-nonlocal.ll
calls-readonly.ll
commute.ll
cond_br2.ll
cond_br.ll
condprop.ll
crash-no-aa.ll [PM/AA] Rebuild LLVM's alias analysis infrastructure in a way compatible 2015-09-09 17:55:00 +00:00
crash.ll
edge.ll
fence.ll Allow value forwarding past release fences in GVN 2016-03-25 22:40:35 +00:00
fpmath.ll
funclet.ll [IR] Reformulate LLVM's EH funclet IR 2015-12-12 05:38:55 +00:00
invariant-load.ll [PRE] Preserve !invariant.load metadata 2015-11-17 00:15:09 +00:00
invariant.group.ll inariant.group handling in GVN 2015-10-02 22:12:22 +00:00
lifetime-simple.ll
load-constant-mem.ll
load-from-unreachable-predecessor.ll
load-pre-align.ll
load-pre-licm.ll
load-pre-nonlocal.ll [PR27284] Reverse the ownership between DICompileUnit and DISubprogram. 2016-04-15 15:57:41 +00:00
local-pre.ll
lpre-call-wrap-2.ll
lpre-call-wrap.ll
malloc-load-removal.ll
MemdepMiscompile.ll
no_speculative_loads_with_asan.ll Disable gvn non-local speculative loads under asan. 2015-11-18 20:43:00 +00:00
noalias.ll
non-local-offset.ll
nonescaping-malloc.ll Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
null-aliases-nothing.ll
phi-translate-partial-alias.ll
phi-translate.ll [PR27284] Reverse the ownership between DICompileUnit and DISubprogram. 2016-04-15 15:57:41 +00:00
pr10820.ll
pr12979.ll
pr14166.ll [PM/AA] Rebuild LLVM's alias analysis infrastructure in a way compatible 2015-09-09 17:55:00 +00:00
pr17732.ll Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
pr17852.ll
pr24397.ll [PHITransAddr] Don't assume that instruction operands are translatable 2015-08-09 15:43:02 +00:00
pr24426.ll Preserve CFG in MergedLoadStoreMotion. This fixes PR24426. 2015-10-18 19:34:10 +00:00
pr25440.ll Fix bug 25440: GVN assertion after coercing loads 2015-11-19 02:45:18 +00:00
pre-basic-add.ll
pre-compare.ll
pre-gep-load.ll [PM] Port GVN to the new pass manager, wire it up, and teach a couple of 2016-03-11 08:50:55 +00:00
pre-load.ll [IR] Reformulate LLVM's EH funclet IR 2015-12-12 05:38:55 +00:00
pre-new-inst.ll GVN: tolerate an instruction being replaced without existing in the leaderboard 2015-07-14 21:03:18 +00:00
pre-no-cost-phi.ll
pre-single-pred.ll
preserve-tbaa.ll
range.ll [GVN] Make a test case more robust 2015-10-28 03:20:05 +00:00
readattrs.ll
rle-must-alias.ll
rle-no-phi-translate.ll
rle-nonlocal.ll
rle-phi-translate.ll
rle-semidominated.ll
rle.ll Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
tbaa.ll
unreachable_block_infinite_loop.ll
volatile-nonvolatile.ll More detailed dependence test between volatile and non-volatile accesses 2016-02-22 23:07:43 +00:00
volatile.ll