| Age | Commit message (Collapse) | Author | Files | Lines | |
|---|---|---|---|---|---|
| 2017-11-11 | fix: volatile stores must not be simplified | Luc Van Oostenryck | 1 | -1/+0 | |
| kill_dominated_stores() simplify away redundant stores. Nice but volatile stores are never redundant and must never be simplified away. Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | |||||
| 2017-11-11 | add test case for bogus volatile simplification | Luc Van Oostenryck | 1 | -10/+6 | |
| Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | |||||
| 2017-02-13 | volatile loads must not be simplified | Luc Van Oostenryck | 1 | -0/+21 | |
| memops.c:simplify_loads() tries to simplify all loads, even volatile ones. For example, on the following code: static int foo(volatile int *a, int v) { *a = v; return *a; } test-linearize returns something like: foo: store.32 %arg2 -> 0[%arg1] ret.32 %arg2 while the correct output is more like: foo: store.32 %arg2 -> 0[%arg1] load.32 %r5 <- 0[%arg1] ret.32 %r5 The fix is to simply ignore loads with the 'volatile' modifier. Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com> Signed-off-by: Christopher Li <sparse@chrisli.org> | |||||
