From 172f049667455194774ab60400d114231a8c06b2 Mon Sep 17 00:00:00 2001 From: helly Date: Fri, 22 Apr 2005 21:46:30 +0000 Subject: [PATCH] - Fixed bug #1187452 unused variable `yyaccept'. --- CHANGELOG | 1 + code.cc | 59 +++++++++++++++++++++++++++++------------------ globals.h | 1 + main.cc | 1 + test/bug1054496.c | 9 ++++---- test/c.c | 7 +++--- test/cmmap.c | 7 +++--- test/cnokw.c | 7 +++--- test/cunroll.c | 23 +++++++++--------- test/input2.c | 3 +-- test/input3.c | 3 +-- test/modula.c | 9 ++++---- test/push.c | 41 ++++++++++++++++---------------- test/scanner.c | 9 ++++---- test/simple.c | 5 ++-- 15 files changed, 95 insertions(+), 90 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 9fa0f9f9..f224b770 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,6 +2,7 @@ Version 0.9.7 (200?-??-??) -------------------------- - Applied #1181535 storable state patch. - Fixed bug #1187785 Re2c fails to generate valid code. +- Fixed bug #1187452 unused variable `yyaccept'. Version 0.9.6 (2005-04-14) -------------------------- diff --git a/code.cc b/code.cc index 6a147aa1..897551c0 100644 --- a/code.cc +++ b/code.cc @@ -369,8 +369,11 @@ void Enter::emit(std::ostream &o, bool &readCh) void Save::emit(std::ostream &o, bool &readCh) { - o << "\tyyaccept = " << selector << ";\n"; - ++oline; + if (bUsedYYAccept) + { + o << "\tyyaccept = " << selector << ";\n"; + ++oline; + } if (state->link) { @@ -412,6 +415,7 @@ void Accept::emit(std::ostream &o, bool &readCh) if (first) { first = false; + bUsedYYAccept = true; o << "\tYYCURSOR = YYMARKER;\n"; o << "\tswitch(yyaccept){\n"; oline += 2; @@ -1164,32 +1168,14 @@ void DFA::emit(std::ostream &o) delete head->action; - bool hasFillLabels = (0<=vFillIndexes); - - oline++; - o << "\n#line " << ++oline << " \"" << outputFileName << "\"\n"; - - if ( hasFillLabels == false ) - { - o << "{\n\tYYCTYPE yych;\n\tunsigned int yyaccept;\n"; - oline += 3; - } - else - { - o << "{\n\n"; - oline += 2; - } - if (bFlag) { BitMap::gen(o, lbChar, ubChar); } - if ( hasFillLabels == false ) - { - o << "\tgoto yy" << label << ";\n"; - ++oline; - } + bUsedYYAccept = false; + + uint start_label = label; vUsedLabels.append(label); (void) new Enter(head, label++); @@ -1203,6 +1189,7 @@ void DFA::emit(std::ostream &o) unsigned int nOrgOline = oline; int maxFillIndexes = vFillIndexes; int orgVFillIndexes = vFillIndexes; + for (s = head; s; s = s->next) { bool readCh = false; @@ -1213,6 +1200,32 @@ void DFA::emit(std::ostream &o) vFillIndexes = orgVFillIndexes; oline = nOrgOline; + bool hasFillLabels = (0<=vFillIndexes); + + oline++; + o << "\n#line " << ++oline << " \"" << outputFileName << "\"\n"; + + if ( hasFillLabels == false ) + { + o << "{\n\tYYCTYPE yych;\n"; + oline += 2; + if (bUsedYYAccept) { + o << "\tunsigned int yyaccept;\n"; + oline++; + } + } + else + { + o << "{\n\n"; + oline += 2; + } + + if ( hasFillLabels == false ) + { + o << "\tgoto yy" << start_label << ";\n"; + ++oline; + } + if (hasFillLabels == true ) { o << " switch(YYGETSTATE())\n"; diff --git a/globals.h b/globals.h index 9a566e3a..240ba7d2 100644 --- a/globals.h +++ b/globals.h @@ -35,6 +35,7 @@ extern char *fileName; extern char *outputFileName; extern bool sFlag; extern bool bFlag; +extern bool bUsedYYAccept; extern unsigned int oline; extern uint maxFill; diff --git a/main.cc b/main.cc index 694660ba..90c9694f 100644 --- a/main.cc +++ b/main.cc @@ -20,6 +20,7 @@ char *fileName = 0; char *outputFileName = 0; bool sFlag = false; bool bFlag = false; +bool bUsedYYAccept = false; unsigned int oline = 1; uint maxFill = 1; diff --git a/test/bug1054496.c b/test/bug1054496.c index 73c5588c..96a1e8e0 100755 --- a/test/bug1054496.c +++ b/test/bug1054496.c @@ -23,7 +23,6 @@ cont: #line 6 "" { YYCTYPE yych; - unsigned int yyaccept; goto yy0; ++YYCURSOR; yy0: @@ -91,13 +90,13 @@ yy2: ++YYCURSOR; yy3: #line 25 "bug1054496.re" { goto cont; } -#line 77 "" +#line 76 "" yy4: ++YYCURSOR; goto yy5; yy5: #line 24 "bug1054496.re" { RET(TAG_EOI); } -#line 83 "" +#line 82 "" yy6: yych = *++YYCURSOR; goto yy3; yy7: ++YYCURSOR; @@ -158,7 +157,7 @@ yy7: ++YYCURSOR; yy8: #line 22 "bug1054496.re" { RET(TAG_A); } -#line 144 "" +#line 143 "" yy9: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; @@ -220,7 +219,7 @@ yy10: switch(yych){ yy11: #line 23 "bug1054496.re" { RET(TAG_TAG); } -#line 207 "" +#line 206 "" } #line 26 "bug1054496.re" diff --git a/test/c.c b/test/c.c index e240f3d1..3e4ea4a2 100644 --- a/test/c.c +++ b/test/c.c @@ -4030,7 +4030,6 @@ comment: #line 3924 "" { YYCTYPE yych; - unsigned int yyaccept; goto yy343; ++YYCURSOR; yy343: @@ -4049,7 +4048,7 @@ yy345: ++YYCURSOR; yy346: #line 256 "c.re" { goto comment; } -#line 3946 "" +#line 3945 "" yy347: ++YYCURSOR; goto yy348; yy348: @@ -4059,7 +4058,7 @@ yy348: s->tok = s->pos = cursor; s->line++; goto comment; } -#line 3956 "" +#line 3955 "" yy349: yych = *++YYCURSOR; goto yy346; yy350: ++YYCURSOR; @@ -4067,7 +4066,7 @@ yy350: ++YYCURSOR; yy351: #line 249 "c.re" { goto std; } -#line 3964 "" +#line 3963 "" } #line 257 "c.re" diff --git a/test/cmmap.c b/test/cmmap.c index 9c9edea5..bc30e8bc 100644 --- a/test/cmmap.c +++ b/test/cmmap.c @@ -4013,7 +4013,6 @@ comment: #line 3924 "" { YYCTYPE yych; - unsigned int yyaccept; goto yy343; ++YYCURSOR; yy343: @@ -4032,7 +4031,7 @@ yy345: ++YYCURSOR; yy346: #line 239 "cmmap.re" { goto comment; } -#line 3946 "" +#line 3945 "" yy347: ++YYCURSOR; goto yy348; yy348: @@ -4042,7 +4041,7 @@ yy348: s->tok = s->pos = cursor; s->line++; goto comment; } -#line 3956 "" +#line 3955 "" yy349: yych = *++YYCURSOR; goto yy346; yy350: ++YYCURSOR; @@ -4050,7 +4049,7 @@ yy350: ++YYCURSOR; yy351: #line 232 "cmmap.re" { goto std; } -#line 3964 "" +#line 3963 "" } #line 240 "cmmap.re" diff --git a/test/cnokw.c b/test/cnokw.c index 20590ac4..b76fc97b 100644 --- a/test/cnokw.c +++ b/test/cnokw.c @@ -1298,7 +1298,6 @@ comment: #line 1191 "" { YYCTYPE yych; - unsigned int yyaccept; goto yy170; ++YYCURSOR; yy170: @@ -1317,7 +1316,7 @@ yy172: ++YYCURSOR; yy173: #line 223 "cnokw.re" { goto comment; } -#line 1213 "" +#line 1212 "" yy174: ++YYCURSOR; goto yy175; yy175: @@ -1327,7 +1326,7 @@ yy175: s->tok = s->pos = cursor; s->line++; goto comment; } -#line 1223 "" +#line 1222 "" yy176: yych = *++YYCURSOR; goto yy173; yy177: ++YYCURSOR; @@ -1335,7 +1334,7 @@ yy177: ++YYCURSOR; yy178: #line 216 "cnokw.re" { goto std; } -#line 1231 "" +#line 1230 "" } #line 224 "cnokw.re" diff --git a/test/cunroll.c b/test/cunroll.c index 80d36013..47cfb943 100644 --- a/test/cunroll.c +++ b/test/cunroll.c @@ -1839,7 +1839,6 @@ comment: #line 1733 "" { YYCTYPE yych; - unsigned int yyaccept; goto yy185; ++YYCURSOR; yy185: @@ -1859,7 +1858,7 @@ yy187: ++YYCURSOR; yy188: #line 242 "cunroll.re" { goto comment; } -#line 1756 "" +#line 1755 "" yy189: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '*': case '/': goto yy190; @@ -1872,7 +1871,7 @@ yy190: s->tok = s->pos = cursor; s->line++; goto comment; } -#line 1769 "" +#line 1768 "" yy191: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '*': case '/': goto yy192; @@ -1881,7 +1880,7 @@ yy191: ++YYCURSOR; yy192: #line 234 "cunroll.re" { goto comment; } -#line 1778 "" +#line 1777 "" yy193: yych = *++YYCURSOR; goto yy188; yy194: ++YYCURSOR; @@ -1892,7 +1891,7 @@ yy194: ++YYCURSOR; yy195: #line 235 "cunroll.re" { goto comment; } -#line 1789 "" +#line 1788 "" yy196: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '*': case '/': goto yy197; @@ -1901,7 +1900,7 @@ yy196: ++YYCURSOR; yy197: #line 236 "cunroll.re" { goto comment; } -#line 1798 "" +#line 1797 "" yy198: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '*': case '/': goto yy199; @@ -1910,7 +1909,7 @@ yy198: ++YYCURSOR; yy199: #line 237 "cunroll.re" { goto comment; } -#line 1807 "" +#line 1806 "" yy200: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '*': case '/': goto yy201; @@ -1919,7 +1918,7 @@ yy200: ++YYCURSOR; yy201: #line 238 "cunroll.re" { goto comment; } -#line 1816 "" +#line 1815 "" yy202: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '*': case '/': goto yy203; @@ -1928,7 +1927,7 @@ yy202: ++YYCURSOR; yy203: #line 239 "cunroll.re" { goto comment; } -#line 1825 "" +#line 1824 "" yy204: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '*': case '/': goto yy205; @@ -1937,19 +1936,19 @@ yy204: ++YYCURSOR; yy205: #line 240 "cunroll.re" { goto comment; } -#line 1834 "" +#line 1833 "" yy206: ++YYCURSOR; goto yy207; yy207: #line 241 "cunroll.re" { goto comment; } -#line 1840 "" +#line 1839 "" yy208: ++YYCURSOR; goto yy209; yy209: #line 227 "cunroll.re" { goto std; } -#line 1846 "" +#line 1845 "" } #line 243 "cunroll.re" diff --git a/test/input2.c b/test/input2.c index 6517d063..36388113 100644 --- a/test/input2.c +++ b/test/input2.c @@ -4,7 +4,6 @@ #line 6 "" { YYCTYPE yych; - unsigned int yyaccept; goto yy0; ++YYCURSOR; yy0: @@ -33,7 +32,7 @@ yy6: ++YYCURSOR; yy7: #line 3 "input2.re" { return 1; } -#line 39 "" +#line 38 "" } #line 5 "input2.re" diff --git a/test/input3.c b/test/input3.c index 6e6b31bd..6e162985 100644 --- a/test/input3.c +++ b/test/input3.c @@ -4,7 +4,6 @@ #line 6 "" { YYCTYPE yych; - unsigned int yyaccept; goto yy0; ++YYCURSOR; yy0: @@ -33,7 +32,7 @@ yy6: ++YYCURSOR; yy7: #line 3 "input3.re" { return 1; } -#line 39 "" +#line 38 "" } #line 5 "input3.re" diff --git a/test/modula.c b/test/modula.c index 015ba33d..51bb5e8d 100644 --- a/test/modula.c +++ b/test/modula.c @@ -4038,7 +4038,6 @@ comment: #line 3982 "" { YYCTYPE yych; - unsigned int yyaccept; goto yy299; ++YYCURSOR; yy299: @@ -4058,7 +4057,7 @@ yy301: ++YYCURSOR; yy302: #line 179 "modula.re" { goto comment; } -#line 4005 "" +#line 4004 "" yy303: yych = *++YYCURSOR; switch(yych){ case '*': goto yy307; @@ -4073,7 +4072,7 @@ yy305: s->tok = s->pos = cursor; s->line++; goto comment; } -#line 4020 "" +#line 4019 "" yy306: yych = *++YYCURSOR; goto yy302; yy307: ++YYCURSOR; @@ -4081,7 +4080,7 @@ yy307: ++YYCURSOR; yy308: #line 172 "modula.re" { ++depth; goto comment; } -#line 4028 "" +#line 4027 "" yy309: ++YYCURSOR; goto yy310; yy310: @@ -4092,7 +4091,7 @@ yy310: else goto comment; } -#line 4039 "" +#line 4038 "" } #line 180 "modula.re" diff --git a/test/push.c b/test/push.c index 95004d31..d0c403ab 100755 --- a/test/push.c +++ b/test/push.c @@ -232,7 +232,6 @@ public: #line 6 "" { YYCTYPE yych; - unsigned int yyaccept; goto yy0; ++YYCURSOR; yy0: @@ -318,7 +317,7 @@ yy2: ++YYCURSOR; yy3: #line 246 "push.re" { SEND(kIdentifier); } -#line 95 "" +#line 94 "" yy4: yych = *++YYCURSOR; switch(yych){ case 'o': goto yy64; @@ -359,73 +358,73 @@ yy12: ++YYCURSOR; yy13: #line 247 "push.re" { SEND(kDecimalConstant);} -#line 135 "" +#line 134 "" yy14: ++YYCURSOR; goto yy15; yy15: #line 249 "push.re" { SEND(kEqual); } -#line 141 "" +#line 140 "" yy16: ++YYCURSOR; goto yy17; yy17: #line 250 "push.re" { SEND(kLeftParen); } -#line 147 "" +#line 146 "" yy18: ++YYCURSOR; goto yy19; yy19: #line 251 "push.re" { SEND(kRightParen); } -#line 153 "" +#line 152 "" yy20: ++YYCURSOR; goto yy21; yy21: #line 252 "push.re" { SEND(kMinus); } -#line 159 "" +#line 158 "" yy22: ++YYCURSOR; goto yy23; yy23: #line 253 "push.re" { SEND(kPlus); } -#line 165 "" +#line 164 "" yy24: ++YYCURSOR; goto yy25; yy25: #line 254 "push.re" { SEND(kStar); } -#line 171 "" +#line 170 "" yy26: ++YYCURSOR; goto yy27; yy27: #line 255 "push.re" { SEND(kSlash); } -#line 177 "" +#line 176 "" yy28: ++YYCURSOR; goto yy29; yy29: #line 257 "push.re" { SKIP(); } -#line 183 "" +#line 182 "" yy30: ++YYCURSOR; goto yy31; yy31: #line 258 "push.re" { SKIP(); } -#line 189 "" +#line 188 "" yy32: ++YYCURSOR; goto yy33; yy33: #line 259 "push.re" { send(kEOF); return 1; } -#line 195 "" +#line 194 "" yy34: ++YYCURSOR; goto yy35; yy35: #line 260 "push.re" { SEND(kUnknown); } -#line 201 "" +#line 200 "" yy36: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; @@ -597,7 +596,7 @@ yy44: ++YYCURSOR; yy45: #line 245 "push.re" { SEND(kReturn); } -#line 375 "" +#line 374 "" yy46: yych = *++YYCURSOR; switch(yych){ case 'i': goto yy47; @@ -680,7 +679,7 @@ yy49: ++YYCURSOR; yy50: #line 244 "push.re" { SEND(kWhile); } -#line 458 "" +#line 457 "" yy51: yych = *++YYCURSOR; switch(yych){ case 'e': goto yy52; @@ -763,7 +762,7 @@ yy54: ++YYCURSOR; yy55: #line 243 "push.re" { SEND(kBreak); } -#line 541 "" +#line 540 "" yy56: yych = *++YYCURSOR; switch(yych){ case 't': goto yy57; @@ -841,7 +840,7 @@ yy58: ++YYCURSOR; yy59: #line 242 "push.re" { SEND(kGoto); } -#line 619 "" +#line 618 "" yy60: yych = *++YYCURSOR; switch(yych){ case 's': goto yy61; @@ -919,7 +918,7 @@ yy62: ++YYCURSOR; yy63: #line 241 "push.re" { SEND(kElse); } -#line 697 "" +#line 696 "" yy64: yych = *++YYCURSOR; switch(yych){ case 'r': goto yy65; @@ -992,7 +991,7 @@ yy65: ++YYCURSOR; yy66: #line 240 "push.re" { SEND(kFor); } -#line 770 "" +#line 769 "" yy67: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '0': @@ -1060,7 +1059,7 @@ yy67: ++YYCURSOR; yy68: #line 239 "push.re" { SEND(kIf); } -#line 838 "" +#line 837 "" } #line 261 "push.re" diff --git a/test/scanner.c b/test/scanner.c index 68535291..dc744c55 100644 --- a/test/scanner.c +++ b/test/scanner.c @@ -695,7 +695,6 @@ comment: #line 618 "" { YYCTYPE yych; - unsigned int yyaccept; goto yy93; ++YYCURSOR; yy93: @@ -715,7 +714,7 @@ yy95: ++YYCURSOR; yy96: #line 193 "scanner.re" { goto comment; } -#line 641 "" +#line 640 "" yy97: yych = *++YYCURSOR; switch(yych){ case '*': goto yy101; @@ -729,7 +728,7 @@ yy99: tok = pos = cursor; cline++; goto comment; } -#line 655 "" +#line 654 "" yy100: yych = *++YYCURSOR; goto yy96; yy101: ++YYCURSOR; @@ -738,7 +737,7 @@ yy102: #line 187 "scanner.re" { ++depth; goto comment; } -#line 664 "" +#line 663 "" yy103: ++YYCURSOR; goto yy104; yy104: @@ -747,7 +746,7 @@ yy104: goto scan; else goto comment; } -#line 673 "" +#line 672 "" } #line 194 "scanner.re" diff --git a/test/simple.c b/test/simple.c index 6c0a372a..8659fe19 100644 --- a/test/simple.c +++ b/test/simple.c @@ -12,7 +12,6 @@ char *q; #line 6 "" { YYCTYPE yych; - unsigned int yyaccept; goto yy0; ++YYCURSOR; yy0: @@ -37,13 +36,13 @@ yy2: ++YYCURSOR; yy3: #line 10 "simple.re" {return YYCURSOR;} -#line 33 "" +#line 32 "" yy4: ++YYCURSOR; goto yy5; yy5: #line 11 "simple.re" {return NULL;} -#line 39 "" +#line 38 "" yy6: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; -- 2.40.0