if(proc) {
nodreg(®, types[TINT64], D_AX);
- gins(ALEAQ, f, ®);
- gins(APUSHQ, ®, N);
+ if(f->op != OREGISTER) {
+ gins(ALEAQ, f, ®);
+ gins(APUSHQ, ®, N);
+ } else
+ gins(APUSHQ, f, N);
nodconst(&con, types[TINT32], argsize(f->type));
gins(APUSHQ, &con, N);
gins(ACALL, N, newproc);
nodo.xoffset = n->left->xoffset + 4*widthptr;
cgen(&nodo, &nodr); // REG = 32+offset(REG) -- i.m->fun[f]
+ // BOTCH nodr.type = fntype;
ginscall(&nodr, proc);
regfree(&nodr);
if(n->left->ullman >= UINF) {
regalloc(&nod, types[tptr], N);
cgen_as(&nod, &afun, 0);
+ nod.type = t;
ginscall(&nod, proc);
regfree(&nod);
goto ret;
if(isptr[n->left->type->etype]) {
regalloc(&nod, types[tptr], N);
cgen_as(&nod, n->left, 0);
+ nod.type = t;
ginscall(&nod, proc);
regfree(&nod);
goto ret;
n = s->oname;
if(n == N || n->type == T) {
- yyerror("variable exported but not defined: %S\n", s);
+ yyerror("variable exported but not defined: %S", s);
return;
}
t = s->otype;
if(t == T) {
- yyerror("type exported but not defined: %S\n", s);
+ yyerror("type exported but not defined: %S", s);
return;
}
{
switch(s->lexical) {
default:
- yyerror("unknown export symbol: %S\n", s, s->lexical);
+ yyerror("unknown export symbol: %S", s, s->lexical);
break;
case LPACK:
- yyerror("package export symbol: %S\n", s);
+ yyerror("package export symbol: %S", s);
break;
case LATYPE:
case LBASETYPE: