mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-12 13:53:03 +00:00
traces: provide a means to get short m4 traces
Let --trace=m4-early dump all the logs from the start (as --trace=m4
used to do), and have --trace=m4 now start traces only when actually
working of the user's grammar.
Can make a big difference in the case of small inputs. E.g.
$ bison -S tests/testsuite.dir/001/input.m4 tests/testsuite.dir/001/input.y --trace=m4 |& wc
3952 19446 251068
$ bison -S tests/testsuite.dir/001/input.m4 tests/testsuite.dir/001/input.y --trace=m4-early |& wc
19491 131904 1830495
* data/skeletons/traceon.m4: New.
* src/getargs.h, src/getargs.c: Introduce --trace=m4-early.
* src/output.c (output_skeleton): Adjust for --trace=m4 and --trace=m4-early.
This commit is contained in:
13
src/output.c
13
src/output.c
@@ -687,6 +687,7 @@ output_skeleton (void)
|
||||
char *skeldir = xpath_join (datadir, "skeletons");
|
||||
char *m4sugar = xpath_join (datadir, "m4sugar/m4sugar.m4");
|
||||
char *m4bison = xpath_join (skeldir, "bison.m4");
|
||||
char *traceon = xpath_join (skeldir, "traceon.m4");
|
||||
char *skel = (IS_PATH_WITH_DIR (skeleton)
|
||||
? xstrdup (skeleton)
|
||||
: xpath_join (skeldir, skeleton));
|
||||
@@ -701,7 +702,7 @@ output_skeleton (void)
|
||||
int filter_fd[2];
|
||||
pid_t pid;
|
||||
{
|
||||
char const *argv[10];
|
||||
char const *argv[11];
|
||||
int i = 0;
|
||||
argv[i++] = m4;
|
||||
|
||||
@@ -720,17 +721,16 @@ output_skeleton (void)
|
||||
argv[i++] = "-I";
|
||||
argv[i++] = datadir;
|
||||
/* Some future version of GNU M4 (most likely 1.6) may treat the
|
||||
-dV in a position-dependent manner. Keep it as the first
|
||||
argument so that all files are traced.
|
||||
|
||||
See the thread starting at
|
||||
-dV in a position-dependent manner. See the thread starting at
|
||||
<http://lists.gnu.org/archive/html/bug-bison/2008-07/msg00000.html>
|
||||
for details. */
|
||||
if (trace_flag & trace_m4)
|
||||
if (trace_flag & trace_m4_early)
|
||||
argv[i++] = "-dV";
|
||||
argv[i++] = m4sugar;
|
||||
argv[i++] = "-";
|
||||
argv[i++] = m4bison;
|
||||
if (trace_flag & trace_m4)
|
||||
argv[i++] = traceon;
|
||||
argv[i++] = skel;
|
||||
argv[i++] = NULL;
|
||||
aver (i <= ARRAY_CARDINALITY (argv));
|
||||
@@ -751,6 +751,7 @@ output_skeleton (void)
|
||||
free (skeldir);
|
||||
free (m4sugar);
|
||||
free (m4bison);
|
||||
free (traceon);
|
||||
free (skel);
|
||||
|
||||
if (trace_flag & trace_muscles)
|
||||
|
||||
Reference in New Issue
Block a user