teak-llvm/llvm/lib/Transforms
Philip Reames 0adbb19409 [EarlyCSE] Exploit open ended invariant.start scopes
If we have an invariant.start with no corresponding invariant.end, then the memory location becomes invariant indefinitely after the invariant.start. As a result, anything dominated by the start is guaranteed to see the value the memory location had when the invariant.start executed.

This patch adds an AvailableInvariants table which tracks the generation a particular memory location became invariant and then uses that information to allow value forwarding that would otherwise be disallowed by potentially aliasing stores. (Reminder: In EarlyCSE everything clobbers everything by default.)

This should be compatible with the MemorySSA variant, but design is generational. We can and should add first class support for invariant.start within MemorySSA at a later time.  I took a quick look at doing so, but probably need some input from a MemorySSA expert.

Differential Revision: https://reviews.llvm.org/D43716

llvm-svn: 327577
2018-03-14 21:35:06 +00:00
..
AggressiveInstCombine [AggressiveInstCombine] Use use_empty() instead of !getNumUses(), NFC 2018-03-02 23:22:49 +00:00
Coroutines [Coroutines] Move debug statement before assert 2018-02-19 20:50:09 +00:00
Hello
InstCombine Simplify more cases of logical ops of masked icmps. 2018-03-13 21:13:18 +00:00
Instrumentation [asan] Fix a false positive ODR violation due to LTO ConstantMerge pass [llvm part, take 3] 2018-03-08 21:02:18 +00:00
IPO Reland r327041: [ThinLTO] Keep available_externally symbols live 2018-03-13 05:08:48 +00:00
ObjCARC ObjCARC: address review comments from majnemer 2018-03-12 23:48:20 +00:00
Scalar [EarlyCSE] Exploit open ended invariant.start scopes 2018-03-14 21:35:06 +00:00
Utils [ThinLTO] Clear dllimport when setting dso_local. 2018-03-13 15:24:51 +00:00
Vectorize [SLP] clean some formats 2018-03-13 18:44:19 +00:00
CMakeLists.txt Another try to commit 323321 (aggressive instruction combine). 2018-01-25 12:06:32 +00:00
LLVMBuild.txt Another try to commit 323321 (aggressive instruction combine). 2018-01-25 12:06:32 +00:00