diff options
Diffstat (limited to 'lpcode.c')
-rw-r--r-- | lpcode.c | 7 |
1 files changed, 4 insertions, 3 deletions
@@ -725,16 +725,17 @@ static void codelabchoice (CompileState *compst, TTree *p1, TTree *p2, int opt, | |||
725 | static void coderecovery (CompileState *compst, TTree *p1, TTree *p2, int opt, | 725 | static void coderecovery (CompileState *compst, TTree *p1, TTree *p2, int opt, |
726 | const Charset *fl, const byte *cs) { | 726 | const Charset *fl, const byte *cs) { |
727 | int emptyp2 = (p2->tag == TTrue); | 727 | int emptyp2 = (p2->tag == TTrue); |
728 | int pcommit; | 728 | int pjmp; |
729 | int test = NOINST; | 729 | int test = NOINST; |
730 | int precovery = addoffsetinst(compst, IRecov); | 730 | int precovery = addoffsetinst(compst, IRecov); |
731 | addcharset(compst, cs); | 731 | addcharset(compst, cs); |
732 | codegen(compst, p1, emptyp2, test, fullset); | 732 | codegen(compst, p1, emptyp2, test, fullset); |
733 | pcommit = addoffsetinst(compst, ICommit); | 733 | pjmp = addoffsetinst(compst, IJmp); |
734 | jumptohere(compst, precovery); | 734 | jumptohere(compst, precovery); |
735 | jumptohere(compst, test); | 735 | jumptohere(compst, test); |
736 | codegen(compst, p2, opt, NOINST, fl); | 736 | codegen(compst, p2, opt, NOINST, fl); |
737 | jumptohere(compst, pcommit); | 737 | addinstruction(compst, IRet, 0); |
738 | jumptohere(compst, pjmp); | ||
738 | } | 739 | } |
739 | /* labeled failure end */ | 740 | /* labeled failure end */ |
740 | 741 | ||