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