[PATCH] D37034: Insert IMPLICIT_DEFS for undef uses in tail merging

Matthias Braun via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 22 15:59:05 PDT 2017


MatzeB created this revision.
Herald added subscribers: javed.absar, mcrosier.

Tail merging can convert an undef use into a normal one when creating a
common tail. Doing so can make the register live out from a block which
previously contained the undef use. To keep the liveness up-to-date,
insert IMPLICIT_DEFs in such blocks when necessary.

To enable this patch the computeLiveIns() function which used to
compute live-ins for a block and set them immediately is split into new
functions:

- computeLiveIns() just computes the live-ins in a LivePhysRegs set.
- addLiveIns() applies the live-ins to a block live-in list.
- computeAndAddLiveIns() is a convenience function combining the other two functions and behaving like computeLiveIns() before this patch.

Based on a patch by Krzysztof Parzyszek <kparzysz at codeaurora.org>


Repository:
  rL LLVM

https://reviews.llvm.org/D37034

Files:
  include/llvm/CodeGen/LivePhysRegs.h
  lib/CodeGen/BranchFolding.cpp
  lib/CodeGen/BranchRelaxation.cpp
  lib/CodeGen/LivePhysRegs.cpp
  lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp
  lib/Target/ARM/ARMExpandPseudoInsts.cpp
  test/CodeGen/Hexagon/branchfolder-insert-impdef.mir
  test/CodeGen/Hexagon/livephysregs-lane-masks2.mir

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D37034.112247.patch
Type: text/x-patch
Size: 11446 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170822/19515413/attachment.bin>


More information about the llvm-commits mailing list