test/slots/run 837 B raw
1
#!/bin/sh
2
# Check that reservation misuse fails during compilation.
3
set -eu
4
emulator=$1
5
shift
6
work=$(mktemp -d)
7
trap 'rm -rf "$work"' EXIT HUP INT TERM
8
for name in duplicate abandon; do
9
    case "$name" in
10
        duplicate) diagnostic='linear value used after consumption' ;;
11
        abandon) diagnostic='linear value is not consumed' ;;
12
    esac
13
    if "$emulator" -memory-size=385024 -data-size=348160 -stack-size=1024 \
14
        -run bin/radiance.rv64.dev "$@" -test \
15
        -pkg "$name" -mod "test/slots/$name.rad" -entry "$name" \
16
        -o "$work/test.rv64" > "$work/log" 2>&1; then
17
        printf 'reservation misuse compiled: %s\n' "$name" >&2
18
        exit 1
19
    fi
20
    if ! grep -q "$diagnostic" "$work/log"; then
21
        cat "$work/log" >&2
22
        exit 1
23
    fi
24
    printf 'reservation rejection: %s passed\n' "$name"
25
done