diff options
| author | Ginger Bill <bill@gingerbill.org> | 2017-06-20 12:38:05 +0100 |
|---|---|---|
| committer | Ginger Bill <bill@gingerbill.org> | 2017-06-20 12:38:05 +0100 |
| commit | 5957d7f7bee7e5fac4035d47ecaaaad022adbfb8 (patch) | |
| tree | f8f38496e6691d4d5ea4317d7b7ae3811ab7e4c0 /src/check_expr.cpp | |
| parent | 35c102137f9a097584bf1af39e9809064293a0a3 (diff) | |
Implicit Parameter Passing based `context` system (replacing Thread Local Storage (TLS) approach)
Diffstat (limited to 'src/check_expr.cpp')
| -rw-r--r-- | src/check_expr.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/check_expr.cpp b/src/check_expr.cpp index 05096bf52..df16ab2b4 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -1419,7 +1419,9 @@ bool abi_compat_return_by_value(gbAllocator a, ProcCallingConvention cc, Type *a if (abi_return_type == NULL) { return false; } - if (cc == ProcCC_Odin) { + switch (cc) { + case ProcCC_Odin: + case ProcCC_Contextless: return false; } @@ -1465,6 +1467,8 @@ void check_procedure_type(Checker *c, Type *type, AstNode *proc_type_node) { if (end->flags&EntityFlag_CVarArg) { if (pt->calling_convention == ProcCC_Odin) { error(end->token, "Odin calling convention does not support #c_vararg"); + } else if (pt->calling_convention == ProcCC_Contextless) { + error(end->token, "Odin's contextless calling convention does not support #c_vararg"); } else if (pt->calling_convention == ProcCC_Fast) { error(end->token, "Fast calling convention does not support #c_vararg"); } else { |