1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-21 03:53:04 +02:00
llvm-mirror/test
David Blaikie 8572946bd5 DebugInfo: Do not emit empty CUs
Consistent with GCC and addresses a shortcoming with ThinLTO where many
imported CUs may end up being empty (because the functions imported from
them either ended up not being used (and were then discarded, since
they're imported as available_externally) or optimized away entirely).

Test cases previously testing empty CUs (either intentionally, or
because they didn't need anything more complicated) had a trivial 'int'
or similar basic type added to their retained types list.

This is a first order approximation - a deeper implementation could do
things like:

1) Be more lazy about construction of the CU - for example if two CUs
containing a single identical retained type are linked together, with
this change one of the two CUs will be produced but empty (since a
duplicate type won't be produced).

2) Go further and invert all the CU links the same way the subprogram
link is inverted - keep named CU lists of retained types, macros, etc,
and have those link back to the CU. Then if they're emitted, the CU is
emitted, but never otherwise - this would allow the metadata itself to
be dropped earlier too, though it seems unlikely that's an important
optimization as there shouldn't be many CUs relative to the number of
other entities.

llvm-svn: 304020
2017-05-26 18:52:56 +00:00
..
Analysis Re-enable "[SCEV] Do not fold dominated SCEVUnknown into AddRecExpr start" 2017-05-26 06:47:04 +00:00
Assembler [IR] Allow attributes with global variables 2017-05-11 12:28:08 +00:00
Bindings
Bitcode Add "REQUIRES:" to the last few tests that use target specific intrinsics 2017-05-15 22:15:22 +00:00
BugPoint
CodeGen AMDGPU/GlobalISel: Mark 32-bit float constants as legal 2017-05-26 16:40:03 +00:00
DebugInfo DebugInfo: Do not emit empty CUs 2017-05-26 18:52:56 +00:00
Examples
ExecutionEngine [RuntimeDyld, PowerPC] Fix check for external symbols when detecting reloction overflow 2017-05-23 14:51:18 +00:00
Feature Add constrained intrinsics for some libm-equivalent operations 2017-05-25 21:31:00 +00:00
FileCheck
Instrumentation Fix coverage check for full post-dominator basic blocks. 2017-05-25 01:41:46 +00:00
Integer
JitListener
LibDriver
Linker Support for taking the max of module flags when linking, use for PIE/PIC 2017-05-23 00:08:00 +00:00
LTO PMB: Run the whole-program-devirt pass during LTO at --lto-O0. 2017-05-26 18:27:13 +00:00
MC [AMDGPU][MC][GFX9] Corrected encoding of flat_scratch* for SDWA opcodes 2017-05-26 18:01:29 +00:00
Object Add support for handling ifuncs to GlobalValue::getBaseObject 2017-05-15 18:28:29 +00:00
ObjectYAML [WebAssembly] Improve libObject support for wasm imports and exports 2017-05-09 23:48:41 +00:00
Other [PM] Enable the new simple loop unswitch pass in the new pass manager 2017-05-26 01:24:11 +00:00
SymbolRewriter
TableGen [globalisel][tablegen] Add support for (set $dst, 1) and test X86's OptForSize predicate. 2017-05-23 19:33:16 +00:00
ThinLTO/X86 [ThinLTO] Do not assert when adding a module with a different but 2017-05-18 03:52:29 +00:00
tools Print symbols from COFF import libraries. 2017-05-24 23:40:36 +00:00
Transforms Re-enable "[SCEV] Do not fold dominated SCEVUnknown into AddRecExpr start" 2017-05-26 06:47:04 +00:00
Unit [Lit] Fix to prevent creation of "%SystemDrive%" directory on Windows. 2017-05-08 08:55:38 +00:00
Verifier Add constrained intrinsics for some libm-equivalent operations 2017-05-25 21:31:00 +00:00
YAMLParser
.clang-format
CMakeLists.txt
lit.cfg
lit.site.cfg.in
TestRunner.sh