diff --git a/libraries/llvm/forward-declare-c.ll b/libraries/llvm/forward-declare-c.ll index a34fb1b79..97e18fa88 100644 --- a/libraries/llvm/forward-declare-c.ll +++ b/libraries/llvm/forward-declare-c.ll @@ -6,8 +6,8 @@ declare %Pos @c_get_arg(i64) declare void @c_io_println(%Pos) declare %Pos @c_io_readln() -declare void @hole(i8*) -declare void @duplicated_prompt() +declare void @hole(i8*) cold +declare void @duplicated_prompt() cold declare %Pos @c_ref_fresh(%Pos) declare %Pos @c_ref_get(%Pos) diff --git a/libraries/llvm/panic.c b/libraries/llvm/panic.c index 7271f07c7..df9703575 100644 --- a/libraries/llvm/panic.c +++ b/libraries/llvm/panic.c @@ -7,11 +7,13 @@ // this should _morally_ be using `stderr`, but we don't tee it in tests // see PR #823 & issue #815 for context +__attribute__((cold)) void hole(const char* message) { printf("PANIC: %s not implemented yet\n", message); exit(1); } +__attribute__((cold)) void duplicated_prompt() { printf("PANIC: Continuation invoked itself\n"); exit(1); diff --git a/libraries/llvm/rts.ll b/libraries/llvm/rts.ll index 604d75a25..9ea069159 100644 --- a/libraries/llvm/rts.ll +++ b/libraries/llvm/rts.ll @@ -407,7 +407,7 @@ define private void @invalidate(%Stack %stack, %Stack %end) { error: call void @duplicated_prompt() - ret void + unreachable check: %isEnd = icmp eq %Stack %next, %end