[PATCH] D21448: Codegen: LICM Remove check for exactly 1 register def.

Kyle Butt via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 16 13:46:59 PDT 2016


iteratee created this revision.
iteratee added a reviewer: sunfish.
iteratee added subscribers: echristo, mcrosier, haicheng, llvm-commits.
iteratee set the repository for this revision to rL LLVM.

When considering whether to split an instruction with a memory operand
into an explicit load and a register-based instruction, we currently
check that the resulting instruction has exactly 1 def. This prevents 2
important LICM optimizations: compares with memory operands, and double
inderect calls. All the tests and the test-suite pass without the check.
My guess as to original intent is to limit the additional register pressure
created by the new instruction, but given that we only split out a single
register, it is already limited.

The licm-dominance test now checks actual memory loads for hoisting instead of
undef, and it tests compares.
hoist-invariant-load.ll now checks for 2 hoists, the intended hoist, and a bonus
from calling a got-relative function in a loop.


Repository:
  rL LLVM

http://reviews.llvm.org/D21448

Files:
  lib/CodeGen/MachineLICM.cpp
  test/CodeGen/X86/hoist-invariant-load.ll
  test/CodeGen/X86/licm-dominance.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D21448.61021.patch
Type: text/x-patch
Size: 4013 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160616/4efb8f42/attachment.bin>


More information about the llvm-commits mailing list