[PATCH] D17474: MachineCopyPropagation: Keep scanning through instructions with regmasks

Matthias Braun via llvm-commits llvm-commits at lists.llvm.org
Mon Feb 22 19:34:15 PST 2016


MatzeB updated this revision to Diff 48771.
MatzeB marked 3 inline comments as done.
MatzeB added a comment.

This is an updated version which simply removes the NoInterveningSideEffects(). From the commit description:

This also simplifies the code by removing the overly conservative
NoInterveningSideEffect() function. This function checked:

- That the two copies belong to the same block: We only process one block at a time and clear our maps in between it is impossible to find a copy from a different block.
- There is no terminator between the two copy instructions: This is not allowed anyway (the MachineVerifier would complain)
- Does not have instructions with hasUnmodeledSideEffects() or isCall() set: Even for those instructuction we must have all clobbers/defs of registers explicit as an operand. If the register is explicitely clobbered we would never come to the point of checking for NoInterveningSideEffect() anyway.

(I also checked this with a temporary build of the test-suite with all
 potentially failing conditions in NoInterveningSideEffect() turned into
 asserts)


Repository:
  rL LLVM

http://reviews.llvm.org/D17474

Files:
  lib/CodeGen/MachineCopyPropagation.cpp
  test/CodeGen/X86/machine-copy-prop.mir

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D17474.48771.patch
Type: text/x-patch
Size: 4885 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160223/082435a9/attachment.bin>


More information about the llvm-commits mailing list