diff options
| author | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2017-04-03 17:07:02 +0200 |
|---|---|---|
| committer | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2017-11-08 21:41:34 +0100 |
| commit | 35db0f18f8153592ec8ed6ea0fa3650c2d3efded (patch) | |
| tree | 7c7893fdc1c9299f05981cc263c4ae918e504913 /validation/optim | |
| parent | 095dc58e5cdaf04330c2f75f74aab415d18d562d (diff) | |
| download | sparse-dev-35db0f18f8153592ec8ed6ea0fa3650c2d3efded.tar.gz | |
associate MOD_RESTRICT with restrict-qualified variables
Note: there is still no semantic associated with 'restrict'
but this is a preparatory step.
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Diffstat (limited to 'validation/optim')
| -rw-r--r-- | validation/optim/restrict.c | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/validation/optim/restrict.c b/validation/optim/restrict.c new file mode 100644 index 00000000..de6289e2 --- /dev/null +++ b/validation/optim/restrict.c @@ -0,0 +1,73 @@ +extern int g, h; + +void f00u(int *s) +{ + g = *s; + h = *s; +} + +void f00r(int *restrict s) +{ + g = *s; + h = *s; +} + + +void f01u(int *a, int *b, int *s) +{ + *a = *s; + *b = *s; +} + +void f01r(int *restrict a, int *restrict b, int *restrict s) +{ + *a = *s; + *b = *s; +} + +/* + * check-name: optim/restrict + * check-command: test-linearize -Wno-decl $file + * check-known-to-fail + * + * check-output-start +f00u: +.L0: + <entry-point> + load.32 %r2 <- 0[%arg1] + store.32 %r2 -> 0[g] + load.32 %r4 <- 0[%arg1] + store.32 %r4 -> 0[h] + ret + + +f00r: +.L2: + <entry-point> + load.32 %r6 <- 0[%arg1] + store.32 %r6 -> 0[g] + store.32 %r6 -> 0[h] + ret + + +f01u: +.L4: + <entry-point> + load.32 %r10 <- 0[%arg3] + store.32 %r10 -> 0[%arg1] + load.32 %r13 <- 0[%arg3] + store.32 %r13 -> 0[%arg2] + ret + + +f01r: +.L6: + <entry-point> + load.32 %r16 <- 0[%arg3] + store.32 %r16 -> 0[%arg1] + store.32 %r16 -> 0[%arg2] + ret + + + * check-output-end + */ |
