Build results: qbe

Build results: qbe

[OK] a9d81338b19f21f7220e340a1c50870b40587120

add support for closure calls

Compiling languages with closures often requires passing
an extra environment parameter to the called function.

One solution is to use a convention, and reserve, say,
the first argument for that purpose.   However, that
makes binding to C a little less smooth.

Alternatively, QBE now provides a way to remain fully
ABI compatible with C by having a "hidden" environment
argument (marked with the keyword 'env').  Calling a
function expecting an environment from C will make the
contents of the environment undefined, but the normal
arguments will be passed without alteration.  Conversely,
calling a C function like it is a closure by passing
it an environemnt will work smoothly.

OK: build: make

STDOUT

cc main.c
cc util.c
cc parse.c
cc cfg.c
cc mem.c
cc ssa.c
cc alias.c
cc load.c
cc copy.c
cc fold.c
cc live.c
cc sysv.c
cc isel.c
cc spill.c
cc rega.c
cc emit.c
ld obj/qbe


STDERR



OK: test: make check

STDOUT

tools/unit.sh all
abi1.ssa...                                  [ok]
abi2.ssa...                                  [ok]
abi3.ssa...                                  [ok]
abi4.ssa...                                  [ok]
abi5.ssa...                                  [ok]
align.ssa...                                 [ok]
collatz.ssa...                               [ok]
cprime.ssa...                                [ok]
cup.ssa...                                   [ok]
dark.ssa...                                  [ok]
double.ssa...                                [ok]
echo.ssa...                                  [ok]
eucl.ssa...                                  [ok]
euclc.ssa...                                 [ok]
fixarg.ssa...                                [ok]
fpcnv.ssa...                                 [ok]
ldbits.ssa...                                [ok]
ldhoist.ssa...                               [ok]
loop.ssa...                                  [ok]
mandel.ssa...                                [ok]
max.ssa...                                   [ok]
philv.ssa...                                 [ok]
prime.ssa...                                 [ok]
puts10.ssa...                                [ok]
queen.ssa...                                 [ok]
sum.ssa...                                   [ok]
vararg1.ssa...                               [ok]
vararg2.ssa...                               [ok]

All is fine!


STDERR



OK: clean: make clean

STDOUT

rm -fr obj


STDERR