clattner at apple.com
Mon Jul 7 23:51:24 PDT 2008
On Jul 3, 2008, at 6:14 PM, Argiris Kirtzidis wrote:
> The "nested-name-specifier '::' " syntax occurs at enough places
> that it would really simplify the code if an efficient
> Parser::GetLookAheadToken(1) could be used.
> I attached a Preprocessor::LookNext implementation for this (pp-
> In the "parse-labeled" patch I use LookNext to determine a label and
> use a separate Parser::ParseLabeledStatement.
Is there a specific problem with calling LookAhead(0)? To me, this is
a performance optimization tweak... I'd rather do this sort of thing
when more of the C++ front-end is in place. This would give us better
grounds for profiling and determine whether it is actually a win in
Adding a "LookNext()" method to the preprocessor as a helper for
LookAhead(0) would be ok if you think it would be significantly useful
though. Also, LookAhead could obviously be improved :).
Finally, are you sure it would be completely unreasonable to refactor
the C++ grammar to avoid the look-ahead in the common case? While
always having peektok available is nice, it adds significant cost to
the hotest part of the C preprocessor. I would expect a significant
slowdown from the patch on large .i files with -Eonly for example
(which spends almost all time in this code).
More information about the cfe-dev