mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 12:41:49 +01:00
[LICM][docs] Document that LICM is also a canonicalization transform. NFC.
This documents that LICM is a canonicalization transform, which we discussed recently in: http://lists.llvm.org/pipermail/llvm-dev/2020-December/147184.html but which was also discused earlier, e.g. in: http://lists.llvm.org/pipermail/llvm-dev/2019-September/135058.html
This commit is contained in:
parent
c5ff87098f
commit
34ffe52cbc
@ -720,6 +720,12 @@ into the preheader block, or by sinking code to the exit blocks if it is safe.
|
||||
This pass also promotes must-aliased memory locations in the loop to live in
|
||||
registers, thus hoisting and sinking "invariant" loads and stores.
|
||||
|
||||
Hoisting operations out of loops is a canonicalization transform. It enables
|
||||
and simplifies subsequent optimizations in the middle-end. Rematerialization
|
||||
of hoisted instructions to reduce register pressure is the responsibility of
|
||||
the back-end, which has more accurate information about register pressure and
|
||||
also handles other optimizations than LICM that increase live-ranges.
|
||||
|
||||
This pass uses alias analysis for two purposes:
|
||||
|
||||
#. Moving loop invariant loads and calls out of loops. If we can determine
|
||||
|
@ -12,6 +12,13 @@
|
||||
// safe. This pass also promotes must-aliased memory locations in the loop to
|
||||
// live in registers, thus hoisting and sinking "invariant" loads and stores.
|
||||
//
|
||||
// Hoisting operations out of loops is a canonicalization transform. It
|
||||
// enables and simplifies subsequent optimizations in the middle-end.
|
||||
// Rematerialization of hoisted instructions to reduce register pressure is the
|
||||
// responsibility of the back-end, which has more accurate information about
|
||||
// register pressure and also handles other optimizations than LICM that
|
||||
// increase live-ranges.
|
||||
//
|
||||
// This pass uses alias analysis for two purposes:
|
||||
//
|
||||
// 1. Moving loop invariant loads and calls out of loops. If we can determine
|
||||
|
Loading…
x
Reference in New Issue
Block a user