[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.




-------------- 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