[PATCH] D23214: [MDA] Treat invariant.start as non-dependence
Sanjoy Das via llvm-commits
llvm-commits at lists.llvm.org
Mon Aug 8 16:01:38 PDT 2016
sanjoy added inline comments.
================
Comment at: lib/Analysis/BasicAliasAnalysis.cpp:793
@@ +792,3 @@
+ //
+ // This cannot be transformed to:
+ //
----------------
A more pertinent example is (I think):
```
*ptr = 40;
*ptr = 50;
invariant_start(ptr)
int val = *ptr;
print(val);
```
cannot be transformed to
```
*ptr = 40;
invariant_start(ptr)
*ptr = 50;
int val = *ptr;
print(val);
```
since the first program (always) prints `50` but the second one can be
optimized to (following the rules of invariant_start):
```
*ptr = 40;
invariant_start(ptr)
*ptr = 50; // This store can be ignored
int val = 40;
print(val);
```
https://reviews.llvm.org/D23214
More information about the llvm-commits
mailing list