From: Ulya Trofimovich Date: Fri, 7 Apr 2017 16:19:09 +0000 (+0100) Subject: Skeleton: don't emit declarations for tags that are optimized out. X-Git-Tag: 1.0~39^2~73 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9483b682b2502f6fb7f1dda6a7824c1302ae0f2d;p=re2c Skeleton: don't emit declarations for tags that are optimized out. --- diff --git a/re2c/src/skeleton/generate_code.cc b/re2c/src/skeleton/generate_code.cc index e76ee0cf..c4c5d9cd 100644 --- a/re2c/src/skeleton/generate_code.cc +++ b/re2c/src/skeleton/generate_code.cc @@ -366,9 +366,6 @@ void emit_start(OutputFile &o, size_t maxfill, const std::string &name, o.ws("\n"); o.ws("\n").wind(1).ws("for (i = 0; status == 0 && cursor < eof && i < keys_count;) {"); o.ws("\n").wind(2).ws("token = cursor;"); - if (!taglistnames.empty()) { - o.ws("\n").wind(2).ws("yytaglistpool_clear(&yytlp);"); - } if (backup) { o.ws("\n").wind(2).ws("const YYCTYPE *marker = NULL;"); } @@ -383,9 +380,6 @@ void emit_start(OutputFile &o, size_t maxfill, const std::string &name, // autogenerated tag variables ConfTags conf("\n" + indent(2, opts->indString) + "const YYCTYPE *@@ = NULL;", ""); output_tags(o.stream(), 0, conf, tagnames, opts); - conf.format = "yytaglist_t *@@ = NULL;"; - output_tags(o.stream(), 0, conf, taglistnames, opts); - // user-defined tag variables std::set::const_iterator var1 = tagvars.begin(), @@ -397,14 +391,21 @@ void emit_start(OutputFile &o, size_t maxfill, const std::string &name, } o.ws(";"); } - var1 = taglistvars.begin(); - var2 = taglistvars.end(); - if (var1 != var2) { - o.ws("\n").wind(2).ws("yytaglist_t *").wstring(*var1); - for (++var1; var1 != var2; ++var1) { - o.ws(", *").wstring(*var1); + if (!taglistnames.empty()) { + o.ws("\n").wind(2).ws("yytaglistpool_clear(&yytlp);"); + // autogenerated tag list variables + conf.format = "yytaglist_t *@@ = NULL;"; + output_tags(o.stream(), 0, conf, taglistnames, opts); + // user-defined tag list variables + var1 = taglistvars.begin(); + var2 = taglistvars.end(); + if (var1 != var2) { + o.ws("\n").wind(2).ws("yytaglist_t *").wstring(*var1); + for (++var1; var1 != var2; ++var1) { + o.ws(", *").wstring(*var1); + } + o.ws(";"); } - o.ws(";"); } o.ws("\n");