0.5.3: Single-module not respected. Fix issue with compiler defined types. Fix optimization levels for projects. Use GEP i8 on offsets. Optimize foreach on len 1 arrays. Move panic blocks last. Fix generic module wildcard imports. Deprecate init_temp / init_new. Fix issue with macro vaarg and untyped lists. Fix extern const globals.

This commit is contained in:
Christoffer Lerno
2023-12-27 00:43:37 +01:00
committed by Christoffer Lerno
parent e91f6e268e
commit deb4cc7c4b
208 changed files with 9555 additions and 9369 deletions

View File

@@ -990,7 +990,7 @@ static inline void llvm_emit_assume(GenContext *c, Expr *expr)
llvm_value_rvalue(c, &value);
assert(value.kind == BE_BOOLEAN);
EMIT_LOC(c, expr);
llvm_emit_call_intrinsic(c, intrinsic_id.assume, NULL, 0, &(value.value), 1);
llvm_emit_assume_raw(c, value.value);
}
}
@@ -1392,8 +1392,11 @@ void llvm_emit_panic_if_true(GenContext *c, BEValue *value, const char *panic_na
LLVMBasicBlockRef panic_block = llvm_basic_block_new(c, "panic");
LLVMBasicBlockRef ok_block = llvm_basic_block_new(c, "checkok");
assert(llvm_value_is_bool(value));
value->value = llvm_emit_expect_false_raw(c, value->value);
llvm_emit_cond_br(c, value, panic_block, ok_block);
llvm_emit_block(c, panic_block);
vec_add(c->panic_blocks, panic_block);
BEValue *values = NULL;
if (value_1)
{