commit 1698b65a4afed1cd63d8232f101615df6db2e7a0
parent 732711fe948bca7542f04347fa6261c85f56fe1e
Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
Date: Wed, 3 Nov 2021 08:40:36 +0100
cc2/qbe: Add support for register parameters
Diffstat:
3 files changed, 5 insertions(+), 0 deletions(-)
diff --git a/src/cmd/cc/cc1/decl.c b/src/cmd/cc/cc1/decl.c
@@ -486,6 +486,7 @@ funbody(Symbol *sym, Symbol *pars[])
switch (yytoken) {
case '{':
case TYPE:
+ case SCLASS:
case TYPEIDEN:
if (curctx != PARAMCTX)
errorp("nested function declaration");
diff --git a/src/cmd/cc/cc2/target/qbe/cgen.c b/src/cmd/cc/cc2/target/qbe/cgen.c
@@ -318,6 +318,7 @@ static Node *
lhs(Node *np, Node *new)
{
switch (np->op) {
+ case OREG:
case OMEM:
case OAUTO:
*new = *np;
@@ -477,6 +478,7 @@ rhs(Node *np, Node *ret)
*ret = *np;
return np;
case OMEM:
+ case OREG:
case OAUTO:
return load(tp, np, ret);
case ONEG:
diff --git a/src/cmd/cc/cc2/target/qbe/code.c b/src/cmd/cc/cc2/target/qbe/code.c
@@ -294,6 +294,8 @@ defglobal(Symbol *sym)
void
defpar(Symbol *sym)
{
+ if (sym->kind == SREG)
+ sym->kind = SAUTO;
sym->type.flags |= PARF;
}