llvm-project/llvm/test/DebugInfo
Jun Bum Lim 2ecb7ba4c6 [CodeGen] Add a new pass for PostRA sink
Summary:
This pass sinks COPY instructions into a successor block, if the COPY is not
used in the current block and the COPY is live-in to a single successor
(i.e., doesn't require the COPY to be duplicated).  This avoids executing the
the copy on paths where their results aren't needed.  This also exposes
additional opportunites for dead copy elimination and shrink wrapping.

These copies were either not handled by or are inserted after the MachineSink
pass. As an example of the former case, the MachineSink pass cannot sink
COPY instructions with allocatable source registers; for AArch64 these type
of copy instructions are frequently used to move function parameters (PhyReg)
into virtual registers in the entry block..

For the machine IR below, this pass will sink %w19 in the entry into its
successor (%bb.1) because %w19 is only live-in in %bb.1.

```
   %bb.0:
      %wzr = SUBSWri %w1, 1
      %w19 = COPY %w0
      Bcc 11, %bb.2
    %bb.1:
      Live Ins: %w19
      BL @fun
      %w0 = ADDWrr %w0, %w19
      RET %w0
    %bb.2:
      %w0 = COPY %wzr
      RET %w0
```
As we sink %w19 (CSR in AArch64) into %bb.1, the shrink-wrapping pass will be
able to see %bb.0 as a candidate.

With this change I observed 12% more shrink-wrapping candidate and 13% more dead copies deleted  in spec2000/2006/2017 on AArch64.

Reviewers: qcolombet, MatzeB, thegameg, mcrosier, gberry, hfinkel, john.brawn, twoh, RKSimon, sebpop, kparzysz

Reviewed By: sebpop

Subscribers: evandro, sebpop, sfertile, aemerson, mgorny, javed.absar, kristof.beyls, llvm-commits

Differential Revision: https://reviews.llvm.org/D41463

llvm-svn: 328237
2018-03-22 20:06:47 +00:00
..
AArch64 [SelectionDAG] Transfer DbgValues when integer operations are promoted 2018-03-19 22:58:50 +00:00
AMDGPU [DebugInfo] Support DWARF v5 source code embedding extension 2018-02-23 23:01:06 +00:00
ARM Followup on Proposal to move MIR physical register namespace to '$' sigil. 2018-01-31 22:04:26 +00:00
COFF Re-land r327620 "[CodeView] Initial support for emitting S_BLOCK32 symbols for lexical scopes" 2018-03-15 21:24:04 +00:00
Generic Move generic test to the Generic directory 2018-03-09 16:42:05 +00:00
Inputs DebugInfo/llvm-symbolizer: Test symbolizing Split DWARF without addresses in the skeleton CU 2018-02-09 03:34:32 +00:00
Lanai
MIR Followup on Proposal to move MIR physical register namespace to '$' sigil. 2018-01-31 22:04:26 +00:00
MSP430 Followup on Proposal to move MIR physical register namespace to '$' sigil. 2018-01-31 22:04:26 +00:00
Mips [FastISel] Sink local value materializations to first use 2018-03-14 21:54:21 +00:00
NVPTX [DEBUG] Fix debug info test for NVPTX, NFC. 2018-01-04 23:50:24 +00:00
PDB Regex out the local hash comparison test. 2017-12-06 00:58:12 +00:00
PowerPC Canonicalize the representation of empty an expression in DIGlobalVariableExpression 2017-08-30 18:06:51 +00:00
Sparc [DebugInfo] Unify dumping of address ranges 2018-01-16 11:17:57 +00:00
SystemZ [CodeGen] Unify MBB reference format in both MIR and debug output 2017-12-04 17:18:51 +00:00
WebAssembly [WebAssembly] Add DebugLoc information to WebAssembly block and loop. 2018-03-15 22:06:51 +00:00
X86 [CodeGen] Add a new pass for PostRA sink 2018-03-22 20:06:47 +00:00
arm-relocs.test llvm-dwarfdump: Make -brief the default and add a -verbose option instead. 2017-09-11 23:05:20 +00:00
cross-cu-scope.ll [DebugInfo] Fix potential CU mismatch for SubprogramScopeDIEs. 2017-11-15 10:57:05 +00:00
debugify.ll [Debugify] Don't check functions which were skipped 2018-02-15 21:28:38 +00:00
debuglineinfo-macho.test
debuglineinfo-path.ll Disable test debuglineinfo-path on powerpc 2018-03-14 02:10:07 +00:00
debuglineinfo.test
debugmacinfo.test [DebugInfo] Support DWARF v5 source code embedding extension 2018-02-23 23:01:06 +00:00
dwarfdump-64-bit-dwarf.test [DebugInfo] Dump a .debug_line section, including line-number program, 2017-11-22 15:48:30 +00:00
dwarfdump-accel.test Refactor dwarfdump -apple-names output 2018-01-29 11:33:17 +00:00
dwarfdump-debug-frame-simple.test [dwarfdump] Make .eh_frame an alias for .debug_frame 2017-09-18 14:15:57 +00:00
dwarfdump-decompression-corrupt.test [Object] Verify object sizes before handing out StringRefs pointing out 2017-08-31 12:27:10 +00:00
dwarfdump-decompression-error.test [llvm-dwarfdump] - Print an error message if section decompression failed. 2017-05-05 10:52:39 +00:00
dwarfdump-dump-flags.test llvm-dwarfdump: automatically dump both regular and .dwo variant of sections 2017-09-13 22:09:01 +00:00
dwarfdump-dump-gdbindex.test llvm-dwarfdump: Replace -debug-dump=sect option with individual options. 2017-09-11 22:59:45 +00:00
dwarfdump-dwp.test llvm-dwarfdump: automatically dump both regular and .dwo variant of sections 2017-09-13 22:09:01 +00:00
dwarfdump-implicit-const.test llvm-dwarfdump: Replace -debug-dump=sect option with individual options. 2017-09-11 22:59:45 +00:00
dwarfdump-invalid-line-table.test [DebugInfo] Don't crash when given invalid DWARFv5 line table prologue. 2018-01-05 10:03:02 +00:00
dwarfdump-invalid.test
dwarfdump-macho-relocs.test llvm-dwarfdump: Replace -debug-dump=sect option with individual options. 2017-09-11 22:59:45 +00:00
dwarfdump-macho-universal.test [dsymutil] Rename llvm-dsymutil -> dsymutil 2018-03-18 11:38:41 +00:00
dwarfdump-objc.test llvm-dwarfdump: Make -brief the default and add a -verbose option instead. 2017-09-11 23:05:20 +00:00
dwarfdump-pubnames.test llvm-dwarfdump: Replace -debug-dump=sect option with individual options. 2017-09-11 22:59:45 +00:00
dwarfdump-ranges.test [DebugInfo] Unify dumping of address ranges 2018-01-16 11:17:57 +00:00
dwarfdump-type-units.test Re-land "[llvm-dwarfdump] Print type names in DW_AT_type DIEs" 2017-10-10 14:15:25 +00:00
dwarfdump-zlib.test llvm-dwarfdump: Make -brief the default and add a -verbose option instead. 2017-09-11 23:05:20 +00:00
dwo.ll llvm-dwarfdump: Replace -debug-dump=sect option with individual options. 2017-09-11 22:59:45 +00:00
invalid-relocations.test [DWARF] - Add testcase for checking message about broken relocations. 2017-07-11 12:29:07 +00:00
llvm-symbolizer-split-dwarf-empty.test Remove some unnecessary REQUIRES: shell from a couple of llvm-symbolizer tests 2018-02-09 15:33:39 +00:00
llvm-symbolizer-split-dwarf-no-skel-address.test Pre-emptively fix test case for windows path separators 2018-02-09 15:39:04 +00:00
llvm-symbolizer-zlib.test
llvm-symbolizer.test Migrate llvm-symbolizer tests to not use %T 2017-09-08 21:10:01 +00:00
macro_link.ll
member-pointers.o
missing-abstract-variable.o
omit-empty.ll DebugInfo: Consider a CU containing only local imported entities to be 'empty' 2017-07-28 03:06:25 +00:00
pr34186.ll Move the stripping of invalid debug info from the Verifier to AutoUpgrade. 2017-10-02 18:31:29 +00:00
pr34672.ll Move the stripping of invalid debug info from the Verifier to AutoUpgrade. 2017-10-02 18:31:29 +00:00
skeletoncu.ll llvm-dwarfdump: Replace -debug-dump=sect option with individual options. 2017-09-11 22:59:45 +00:00
strip-DIGlobalVariable.ll
strip-loop-metadata.ll
typeunit-header.test llvm-dwarfdump: Make -brief the default and add a -verbose option instead. 2017-09-11 23:05:20 +00:00
unrolled-loop-remainder.ll [LoopUnroll][DebugInfo] Don't add metadata to unrolled remainder loop 2017-09-04 08:12:16 +00:00