AaronBallman wrote:

> > > But the token kind we have is `identifier` and not one of the keywords, 
> > > so we can't do the more trivial integer comparisons.
> > 
> > 
> > Can we precompute a list/map/whatever of all identifiers that are keywords 
> > in C++ but not in C and then do pointer comparisons on the 
> > `IdentifierInfo*` maybe? At least then we wouldn’t have to do actual string 
> > comparisons; that said, I’m not sure that’s going to be that much better...
> 
> That's a pretty good idea, let me try that. I'll back out the changes that 
> disable checking when the diagnostic isn't enabled so we get a better 
> comparison.

That idea clawed back most of the performance:
```
Initial slow-down: C            56a3f3cd28      8.04s (+2.96%)  8.23s (+3.32%)  
11.87s (+1.92%)         2.83s (+10.21%)         8.50s (+2.99%)  3.22s (+7.82%)  
7.12s (+1.63%)  2.43s (+5.91%)  580.64s (+0.44%)
New approach: C                 07e44e05f8      7.80s (-2.85%)  8.03s (-2.86%)  
11.63s (-1.57%)         2.57s (-8.93%)  8.25s (-2.60%)  2.97s (-7.09%)  7.06s 
(-1.02%)  2.33s (-3.10%)  580.01s (+0.01%)
```

https://github.com/llvm/llvm-project/pull/137234
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to