+ if (endproc.isfunc) {
+ retvalsize = size(f->type);
+ if (retvalsize > sizeof(long)) {
+ pushretval(retvalsize, true);
+ copy = newarr(char, retvalsize);
+ popn(retvalsize, copy);
+ tmp = build(O_SCON, copy);
+ } else {
+ tmp = build(O_LCON, (long) (reg(0)));
+ }
+ tmp->nodetype = f->type;
+ tfree(endproc.callnode);
+ *(endproc.callnode) = *(tmp);
+ dispose(tmp);
+ eval(endproc.cmdnode);
+ } else {
+ putchar('\n');
+ printname(stdout, f);
+ printf(" returns successfully\n", symname(f));
+ }