This commit is contained in:
2026-06-11 12:38:01 -06:00
parent 1ed9eba90a
commit ab0e88ede2
2 changed files with 10 additions and 3 deletions

View File

@@ -53,7 +53,7 @@ enum Token {
Tphi,
Tjmp,
Tjnz,
Ttail,
Ttail,
Tret,
Thlt,
Texport,
@@ -668,6 +668,10 @@ parseline(PState ps)
goto Close;
case Ttail:
curb->jmp.type = Jtail;
curb->jmp.arg = parseref ();
/* Ins *restore = curi; */
parserefl(1);
/* curi = restore; */
goto Close;
case Tjmp:
curb->jmp.type = Jjmp;
@@ -1440,7 +1444,8 @@ printfn(Fn *fn, FILE *f)
fprintf(f, "\tjmp @%s\n", b->s1->name);
break;
case Jtail:
fprintf (f, "\ttail\n");
fprintf (f, "\ttail ");
printref (b->jmp.arg, fn, f);
break;
default:
fprintf(f, "\t%s ", jtoa[b->jmp.type]);

View File

@@ -4,5 +4,7 @@ function w $factorial (w %n, w %acc) {
@z
ret %acc
@nz
tail
%n_next =w sub %n, 1
%acc_next =w mul %n, %acc
tail $factorial (w %n_next, w %acc)
}