https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116087
--- Comment #4 from Andi Kleen <andi-gcc at firstfloor dot org> ---
After some digging into the code: libcpp already keeps track of how many tokens
get expanded in a global. This is even accessible for through linemap's
statistics dumped on -fmem-report, but only as a averaged statistic:
if (s.num_expanded_macros != 0)
fprintf (stderr, "Average number of tokens per macro expansion: %5ld\n",
s.num_macro_tokens / s.num_expanded_macros);
I guess a first step would be to make those accessible directly.
diff --git a/gcc/input.cc b/gcc/input.cc
index fabfbfb6eaa..d3b12037ba8 100644
--- a/gcc/input.cc
+++ b/gcc/input.cc
@@ -1325,6 +1325,8 @@ dump_line_table_statistics (void)
if (s.num_expanded_macros != 0)
fprintf (stderr, "Average number of tokens per macro expansion: %5ld\n",
s.num_macro_tokens / s.num_expanded_macros);
+ fprintf (stderr, "Number of expanded tokens: " PRsa (5) "\n",
+ SIZE_AMOUNT (s.num_macro_tokens));
fprintf (stderr,
"\nLine Table allocations during the "
"compilation process\n");