From 9126afa2da0e1635d78429075cc44ca576f68169 Mon Sep 17 00:00:00 2001 From: Quentin Carbonneaux Date: Thu, 24 Nov 2022 11:08:33 +0100 Subject: new hlt block terminator It is handy to express when the end of a block cannot be reached. If a hlt terminator is executed, it traps the program. We don't go the llvm way and specify execution semantics as undefined behavior. --- rv64/emit.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'rv64') diff --git a/rv64/emit.c b/rv64/emit.c index 4ce6555..f9e58da 100644 --- a/rv64/emit.c +++ b/rv64/emit.c @@ -494,6 +494,9 @@ rv64_emitfn(Fn *fn, FILE *f) emitins(i, fn, f); lbl = 1; switch (b->jmp.type) { + case Jhlt: + fprintf(f, "\tebreak\n"); + break; case Jret0: if (fn->dynalloc) { if (frame - 16 <= 2048) -- cgit 1.4.1