mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 12:01:16 +00:00
- Change distinct -> typedef.
- Order of attribute declaration is changed for `alias`. - Added `LANGUAGE_DEV_VERSION` env constant. - Rename `anyfault` -> `fault`. - Changed `fault` -> `faultdef`. - Added `attrdef` instead of `alias` for attribute aliases.
This commit is contained in:
committed by
Christoffer Lerno
parent
fc5615a7a1
commit
5c77c9a754
@@ -207,7 +207,7 @@ BEValue llvm_emit_assign_expr(GenContext *c, BEValue *ref, Expr *expr, LLVMValue
|
||||
|
||||
if (optional)
|
||||
{
|
||||
llvm_store_to_ptr_raw(c, optional, llvm_get_zero(c, type_anyfault), type_anyfault);
|
||||
llvm_store_to_ptr_raw(c, optional, llvm_get_zero(c, type_fault), type_fault);
|
||||
}
|
||||
POP_CATCH();
|
||||
|
||||
@@ -217,8 +217,8 @@ BEValue llvm_emit_assign_expr(GenContext *c, BEValue *ref, Expr *expr, LLVMValue
|
||||
if (rejump_block)
|
||||
{
|
||||
llvm_emit_block(c, rejump_block);
|
||||
LLVMValueRef error = llvm_load_abi_alignment(c, type_anyfault, optional, "reload_err");
|
||||
llvm_store_to_ptr_raw(c, c->catch.fault, error, type_anyfault);
|
||||
LLVMValueRef error = llvm_load_abi_alignment(c, type_fault, optional, "reload_err");
|
||||
llvm_store_to_ptr_raw(c, c->catch.fault, error, type_fault);
|
||||
llvm_emit_br(c, c->catch.block);
|
||||
}
|
||||
llvm_emit_block(c, assign_block);
|
||||
@@ -4250,7 +4250,7 @@ static inline void llvm_emit_rethrow_expr(GenContext *c, BEValue *be_value, Expr
|
||||
LLVMBasicBlockRef no_err_block = llvm_basic_block_new(c, "noerr_block");
|
||||
|
||||
// Set the catch/error var
|
||||
LLVMValueRef error_var = llvm_emit_alloca_aligned(c, type_anyfault, "error_var");
|
||||
LLVMValueRef error_var = llvm_emit_alloca_aligned(c, type_fault, "error_var");
|
||||
|
||||
PUSH_CATCH_VAR_BLOCK(error_var, guard_block);
|
||||
|
||||
@@ -4275,7 +4275,7 @@ static inline void llvm_emit_rethrow_expr(GenContext *c, BEValue *be_value, Expr
|
||||
llvm_emit_statement_chain(c, expr->rethrow_expr.cleanup);
|
||||
POP_DEFER_ERROR();
|
||||
BEValue value;
|
||||
llvm_value_set_address_abi_aligned(&value, error_var, type_anyfault);
|
||||
llvm_value_set_address_abi_aligned(&value, error_var, type_fault);
|
||||
if (expr->rethrow_expr.in_block)
|
||||
{
|
||||
BlockExit *exit = *expr->rethrow_expr.in_block;
|
||||
@@ -4305,7 +4305,7 @@ static inline void llvm_emit_force_unwrap_expr(GenContext *c, BEValue *be_value,
|
||||
LLVMBasicBlockRef no_err_block = llvm_basic_block_new(c, "noerr_block");
|
||||
|
||||
// Set the catch/error var
|
||||
LLVMValueRef error_var = llvm_emit_alloca_aligned(c, type_anyfault, "error_var");
|
||||
LLVMValueRef error_var = llvm_emit_alloca_aligned(c, type_fault, "error_var");
|
||||
|
||||
PUSH_CATCH_VAR_BLOCK(error_var, panic_block);
|
||||
|
||||
@@ -4330,8 +4330,8 @@ static inline void llvm_emit_force_unwrap_expr(GenContext *c, BEValue *be_value,
|
||||
SourceSpan loc = expr->span;
|
||||
BEValue *varargs = NULL;
|
||||
BEValue fault_arg;
|
||||
llvm_value_set_address(&fault_arg, error_var, type_anyfault, type_abi_alignment(type_anyfault));
|
||||
llvm_emit_any_from_value(c, &fault_arg, type_anyfault);
|
||||
llvm_value_set_address(&fault_arg, error_var, type_fault, type_abi_alignment(type_fault));
|
||||
llvm_emit_any_from_value(c, &fault_arg, type_fault);
|
||||
vec_add(varargs, fault_arg);
|
||||
llvm_emit_panic(c, "Force unwrap failed!", loc, "Unexpected fault '%s' was unwrapped!", varargs);
|
||||
}
|
||||
@@ -4747,8 +4747,8 @@ static void llvm_emit_const_expr(GenContext *c, BEValue *be_value, Expr *expr)
|
||||
{
|
||||
Decl *decl = expr->const_expr.fault;
|
||||
ASSERT(decl);
|
||||
LLVMValueRef value = LLVMBuildPtrToInt(c->builder, llvm_get_ref(c, decl), llvm_get_type(c, type_anyfault), "");
|
||||
llvm_value_set(be_value, value, type_anyfault);
|
||||
LLVMValueRef value = LLVMBuildPtrToInt(c->builder, llvm_get_ref(c, decl), llvm_get_type(c, type_fault), "");
|
||||
llvm_value_set(be_value, value, type_fault);
|
||||
return;
|
||||
}
|
||||
case CONST_ENUM:
|
||||
@@ -5354,7 +5354,7 @@ void llvm_emit_raw_call(GenContext *c, BEValue *result_value, FunctionPrototype
|
||||
BEValue error_holder = *result_value;
|
||||
if (error_var)
|
||||
{
|
||||
llvm_value_set_address_abi_aligned(&error_holder, c->catch.fault, type_anyfault);
|
||||
llvm_value_set_address_abi_aligned(&error_holder, c->catch.fault, type_fault);
|
||||
}
|
||||
|
||||
LLVMValueRef stored_error;
|
||||
@@ -6289,8 +6289,8 @@ static inline void llvm_emit_try_unwrap(GenContext *c, BEValue *value, Expr *exp
|
||||
if (!expr->try_expr.optional)
|
||||
{
|
||||
LLVMValueRef fail_ref = decl_optional_ref(expr->try_expr.decl);
|
||||
LLVMValueRef errv = llvm_load(c, llvm_get_type(c, type_anyfault), fail_ref, type_abi_alignment(type_anyfault), "load.err");
|
||||
LLVMValueRef result = LLVMBuildICmp(c->builder, LLVMIntEQ, errv, llvm_get_zero(c, type_anyfault), "result");
|
||||
LLVMValueRef errv = llvm_load(c, llvm_get_type(c, type_fault), fail_ref, type_abi_alignment(type_fault), "load.err");
|
||||
LLVMValueRef result = LLVMBuildICmp(c->builder, LLVMIntEQ, errv, llvm_get_zero(c, type_fault), "result");
|
||||
llvm_value_set(value, result, type_bool);
|
||||
return;
|
||||
}
|
||||
@@ -6327,8 +6327,8 @@ void llvm_emit_catch_unwrap(GenContext *c, BEValue *value, Expr *expr)
|
||||
}
|
||||
else
|
||||
{
|
||||
LLVMValueRef temp_err = llvm_emit_alloca_aligned(c, type_anyfault, "temp_err");
|
||||
llvm_value_set_address_abi_aligned(&addr, temp_err, type_anyfault);
|
||||
LLVMValueRef temp_err = llvm_emit_alloca_aligned(c, type_fault, "temp_err");
|
||||
llvm_value_set_address_abi_aligned(&addr, temp_err, type_fault);
|
||||
}
|
||||
|
||||
LLVMBasicBlockRef catch_block = llvm_basic_block_new(c, "end_block");
|
||||
@@ -6347,11 +6347,11 @@ void llvm_emit_catch_unwrap(GenContext *c, BEValue *value, Expr *expr)
|
||||
|
||||
POP_CATCH();
|
||||
|
||||
llvm_store_raw(c, &addr, llvm_get_zero(c, type_anyfault));
|
||||
llvm_store_raw(c, &addr, llvm_get_zero(c, type_fault));
|
||||
llvm_emit_br(c, catch_block);
|
||||
llvm_emit_block(c, catch_block);
|
||||
llvm_value_rvalue(c, &addr);
|
||||
llvm_value_set(value, addr.value, type_anyfault);
|
||||
llvm_value_set(value, addr.value, type_fault);
|
||||
}
|
||||
|
||||
|
||||
@@ -6656,7 +6656,7 @@ static LLVMValueRef llvm_get_benchmark_hook_global(GenContext *c, Expr *expr)
|
||||
INLINE void llvm_emit_last_fault(GenContext *c, BEValue *value)
|
||||
{
|
||||
ASSERT(c->defer_error_var);
|
||||
llvm_value_set_address_abi_aligned(value, c->defer_error_var, type_anyfault);
|
||||
llvm_value_set_address_abi_aligned(value, c->defer_error_var, type_fault);
|
||||
}
|
||||
|
||||
INLINE void llmv_emit_benchmark_hook(GenContext *c, BEValue *value, Expr *expr)
|
||||
@@ -7036,12 +7036,6 @@ void llvm_emit_expr(GenContext *c, BEValue *value, Expr *expr)
|
||||
llvm_value_rvalue(c, value);
|
||||
value->type = type_lowering(expr->type);
|
||||
return;
|
||||
case EXPR_ANYFAULT_TO_FAULT:
|
||||
REMINDER("Improve anyfault -> fault");
|
||||
llvm_emit_expr(c, value, expr->inner_expr);
|
||||
llvm_value_rvalue(c, value);
|
||||
value->type = type_lowering(expr->type);
|
||||
return;
|
||||
case EXPR_VECTOR_FROM_ARRAY:
|
||||
llvm_emit_vector_from_array(c, value, expr);
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user