8 Commits

Author SHA1 Message Date
Max Kazantsev
8e59cd1915 [LICM] Hoist guards from non-header blocks
This patch relaxes overconservative checks on whether or not we could write
memory before we execute an instruction. This allows us to hoist guards out of
loops even if they are not in the header block.

Differential Revision: https://reviews.llvm.org/D50891
Reviewed By: fedor.sergeev



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@346643 91177308-0d34-0410-b5e6-96231b3b80d8
2018-11-12 09:29:58 +00:00
Max Kazantsev
281457bf89 [NFC] Rename variable
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@341901 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-11 05:10:01 +00:00
Max Kazantsev
62f16664ab [NFC] Simplify inner structure of InstructionPrecedenceTracking
Currently it has a set KnownBlocks that marks blocks as having cached
answers and a map FirstSpecialInsts that maps these blocks to first
special instructions in them. The value in the map is always non-null,
and for blocks that are known to have no special instructions the map
does not have an instance.

This patch removes KnownBlocks as obsolete. Instead, for blocks that
are known to have no special instructions, we just put a nullptr value.
This makes the code much easier to read.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@341531 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-06 09:29:42 +00:00
Max Kazantsev
d8ffa610fe Return "[NFC] Add severe validation of InstructionPrecedenceTracking"
This validation patch has been reverted as rL341147 because of conserns raised by
@reames. This revision returns it as is to raise a discussion and address the concerns.

Differential Revision: https://reviews.llvm.org/D51523
Reviewed By: reames


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@341526 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-06 08:33:02 +00:00
Max Kazantsev
d02189d061 Revert "[NFC] Add severe validation of InstructionPrecedenceTracking" for discussion
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@341147 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-31 00:01:54 +00:00
Max Kazantsev
9480b0964b [NFC] Add severe validation of InstructionPrecedenceTracking
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@341051 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-30 10:26:06 +00:00
Max Kazantsev
009ed30f63 [NFC] Rename map to make the naming consistent
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@341043 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-30 09:24:33 +00:00
Max Kazantsev
3a86455ee7 [NFC] Move OrderedInstructions and InstructionPrecedenceTracking to Analysis
These classes don't make any changes to IR and have no reason to be in
Transform/Utils. This patch moves them to Analysis folder. This will allow
us reusing these classes in some analyzes, like MustExecute.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@341015 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-30 04:49:03 +00:00