commit 8a564b2ea4084f554f6ac18034c8fe7fce65966e
parent 3b779b98d1cbcf4e2803970c72927306f5e02603
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;
}