Remove "pure" and "pure_none" calling conventions

This commit is contained in:
gingerBill
2021-02-23 13:10:23 +00:00
parent a652c24ac3
commit 28ed310f31
15 changed files with 18 additions and 111 deletions
+3 -9
View File
@@ -2172,7 +2172,7 @@ Type *type_to_abi_compat_param_type(gbAllocator a, Type *original_type, ProcCall
return t_rawptr;
}
if (cc == ProcCC_None || cc == ProcCC_PureNone || cc == ProcCC_InlineAsm) {
if (is_calling_convention_none(cc)) {
return new_type;
}
@@ -2312,7 +2312,7 @@ Type *type_to_abi_compat_result_type(gbAllocator a, Type *original_type, ProcCal
if (build_context.ODIN_OS == "windows") {
if (build_context.ODIN_ARCH == "amd64") {
if (is_type_integer_128bit(single_type)) {
if (cc == ProcCC_None || cc == ProcCC_PureNone) {
if (is_calling_convention_none(cc)) {
return original_type;
} else {
return alloc_type_simd_vector(2, t_u64);
@@ -2378,7 +2378,7 @@ bool abi_compat_return_by_pointer(gbAllocator a, ProcCallingConvention cc, Type
if (abi_return_type == nullptr) {
return false;
}
if (cc == ProcCC_None || cc == ProcCC_PureNone || cc == ProcCC_InlineAsm) {
if (is_calling_convention_none(cc)) {
return false;
}
@@ -2442,7 +2442,6 @@ void set_procedure_abi_types(Type *type) {
switch (type->Proc.calling_convention) {
case ProcCC_Odin:
case ProcCC_Contextless:
case ProcCC_Pure:
if (is_type_pointer(new_type) && !is_type_pointer(e->type) && !is_type_proc(e->type)) {
e->flags |= EntityFlag_ImplicitReference;
}
@@ -2540,11 +2539,6 @@ bool check_procedure_type(CheckerContext *ctx, Type *type, Ast *proc_type_node,
type->Proc.has_named_results = first->token.string != "";
}
if (result_count == 0 && cc == ProcCC_Pure) {
error(proc_type_node, "\"pure\" procedures must have at least 1 return value");
}
bool optional_ok = (pt->tags & ProcTag_optional_ok) != 0;
if (optional_ok) {
if (result_count != 2) {