amd64/sysv: unbreak env calls

Env calls were disfunctional from the
start. This fixes them on amd64, but
they remain to do on arm64. A new
test shows how to use them.
This commit is contained in:
Quentin Carbonneaux 2021-10-17 20:56:25 +02:00
parent 462e49fd5c
commit 503c672d47
2 changed files with 26 additions and 3 deletions

21
test/env.ssa Normal file
View file

@ -0,0 +1,21 @@
# sanity checks for env calls
function l $epar(env %e, l %i) {
@start
%x =l add %e, %i
ret %x
}
export function l $earg(l %a, l %b) {
@start
%r1 =l call $epar(env %a, l %b)
# okay to call a regular function
# with an env argument
%r2 =l call $labs(env 113, l %r1)
ret %r2
}
# >>> driver
# extern long earg(long, long);
# int main(void) { return !(earg(2, -44) == 42); }
# <<<