From: Miquel Sabaté Solà Date: Tue, 11 Dec 2012 17:23:04 +0000 (-0500) Subject: cmd/gc: merge casep and casee labels X-Git-Tag: go1.1rc2~1665 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=0dd0e1ad0c4fdd7e4090d588150628147b4171e3;p=gostls13.git cmd/gc: merge casep and casee labels The code inside the casee and casep labels can perfectly be merged since they essentially do the same. The character to be stored where cp points is just the character contained by the c variable. R=golang-dev, dave, rsc CC=golang-dev https://golang.org/cl/6845112 --- diff --git a/src/cmd/gc/lex.c b/src/cmd/gc/lex.c index 1b433a9a24..6481ceb1e1 100644 --- a/src/cmd/gc/lex.c +++ b/src/cmd/gc/lex.c @@ -1296,13 +1296,13 @@ tnum: if(cp == lexbuf+2) yyerror("malformed hex constant"); if(c == 'p') - goto casep; + goto caseep; goto ncu; } } if(c == 'p') // 0p begins floating point zero - goto casep; + goto caseep; c1 = 0; for(;;) { @@ -1320,7 +1320,7 @@ tnum: if(c == '.') goto casedot; if(c == 'e' || c == 'E') - goto casee; + goto caseep; if(c == 'i') goto casei; if(c1) @@ -1330,10 +1330,8 @@ tnum: dc: if(c == '.') goto casedot; - if(c == 'e' || c == 'E') - goto casee; - if(c == 'p' || c == 'P') - goto casep; + if(c == 'e' || c == 'E' || c == 'p' || c == 'P') + goto caseep; if(c == 'i') goto casei; @@ -1369,29 +1367,8 @@ casedot: if(c != 'e' && c != 'E') goto caseout; -casee: - *cp++ = 'e'; - c = getc(); - if(c == '+' || c == '-') { - *cp++ = c; - c = getc(); - } - if(!yy_isdigit(c)) - yyerror("malformed fp constant exponent"); - while(yy_isdigit(c)) { - if(cp+10 >= ep) { - yyerror("identifier too long"); - errorexit(); - } - *cp++ = c; - c = getc(); - } - if(c == 'i') - goto casei; - goto caseout; - -casep: - *cp++ = 'p'; +caseep: + *cp++ = c; c = getc(); if(c == '+' || c == '-') { *cp++ = c;