aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/validation/memops-volatile.c
AgeCommit message (Collapse)AuthorFilesLines
2017-11-11fix: volatile stores must not be simplifiedLuc Van Oostenryck1-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-11add test case for bogus volatile simplificationLuc Van Oostenryck1-10/+6
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
2017-02-13volatile loads must not be simplifiedLuc Van Oostenryck1-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>