[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