diff options
Diffstat (limited to 'src/cmd/gc/pgen.c')
| -rw-r--r-- | src/cmd/gc/pgen.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/cmd/gc/pgen.c b/src/cmd/gc/pgen.c index d16481b66..8e65ba22d 100644 --- a/src/cmd/gc/pgen.c +++ b/src/cmd/gc/pgen.c @@ -54,7 +54,11 @@ compile(Node *fn) t = structnext(&save); } } - + + order(curfn); + if(nerrors != 0) + goto ret; + hasdefer = 0; walk(curfn); if(nerrors != 0) @@ -70,6 +74,8 @@ compile(Node *fn) nodconst(&nod1, types[TINT32], 0); ptxt = gins(ATEXT, isblank(curfn->nname) ? N : curfn->nname, &nod1); + if(fn->dupok) + ptxt->TEXTFLAG = DUPOK; afunclit(&ptxt->from); ginit(); @@ -117,6 +123,10 @@ compile(Node *fn) if(0) print("allocauto: %lld to %lld\n", oldstksize, (vlong)stksize); + setlineno(curfn); + if(stksize+maxarg > (1ULL<<31)) + yyerror("stack frame too large (>2GB)"); + defframe(ptxt); if(0) |
