aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Analysis/InstructionPrecedenceTracking.cpp
AgeCommit message (Collapse)AuthorFilesLines
2019-02-14Make widenable condition transparent for MemoryWriteTrackingMax Kazantsev1-0/+4
Side effects of widenable condition intrinsic are modelled via InaccessibleMemOnly, and there is no way to say that it isn't really writing any memory. This patch teaches MemoryWriteTracking ignore this intrinsic. llvm-svn: 354021
2019-01-19Update the file headers across all of the LLVM projects in the monorepoChandler Carruth1-4/+3
to reflect the new license. We understand that people may be surprised that we're moving the header entirely to discuss the new license. We checked this carefully with the Foundation's lawyer and we believe this is the correct approach. Essentially, all code in the project is now made available by the LLVM project under our new license, so you will see that the license headers include that license only. Some of our contributors have contributed code under our old license, and accordingly, we have retained a copy of our old license notice in the top-level files in each project and repository. llvm-svn: 351636
2019-01-09[IPT] Drop cache less eagerly in GVN and LoopSafetyInfoMax Kazantsev1-2/+10
Current strategy of dropping `InstructionPrecedenceTracking` cache is to invalidate the entire basic block whenever we change its contents. In fact, `InstructionPrecedenceTracking` has 2 internal strictures: `OrderedInstructions` that is needed to be invalidated whenever the contents changes, and the map with first special instructions in block. This second map does not need an update if we add/remove a non-special instuction because it cannot affect the contents of this map. This patch changes API of `InstructionPrecedenceTracking` so that it now accounts for reasons under which we invalidate blocks. This should lead to much less recalculations of the map and should save us some compile time because in practice we don't typically add/remove special instructions. Differential Revision: https://reviews.llvm.org/D54462 Reviewed By: efriedma llvm-svn: 350694
2018-11-12[LICM] Hoist guards from non-header blocksMax Kazantsev1-0/+5
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 llvm-svn: 346643
2018-09-11[NFC] Rename variableMax Kazantsev1-2/+2
llvm-svn: 341901
2018-09-06[NFC] Simplify inner structure of InstructionPrecedenceTrackingMax Kazantsev1-32/+17
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. llvm-svn: 341531
2018-09-06Return "[NFC] Add severe validation of InstructionPrecedenceTracking"Max Kazantsev1-0/+60
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 llvm-svn: 341526
2018-08-31Revert "[NFC] Add severe validation of InstructionPrecedenceTracking" for ↵Max Kazantsev1-39/+0
discussion llvm-svn: 341147
2018-08-30[NFC] Add severe validation of InstructionPrecedenceTrackingMax Kazantsev1-0/+39
llvm-svn: 341051
2018-08-30[NFC] Rename map to make the naming consistentMax Kazantsev1-6/+6
llvm-svn: 341043
2018-08-30[NFC] Move OrderedInstructions and InstructionPrecedenceTracking to AnalysisMax Kazantsev1-0/+99
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. llvm-svn: 341015