aboutsummaryrefslogtreecommitdiff
path: root/src/check_expr.cpp
diff options
context:
space:
mode:
authorGinger Bill <bill@gingerbill.org>2017-06-20 12:38:05 +0100
committerGinger Bill <bill@gingerbill.org>2017-06-20 12:38:05 +0100
commit5957d7f7bee7e5fac4035d47ecaaaad022adbfb8 (patch)
treef8f38496e6691d4d5ea4317d7b7ae3811ab7e4c0 /src/check_expr.cpp
parent35c102137f9a097584bf1af39e9809064293a0a3 (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.cpp6
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 {