[Sema] Move Diags.isIgnored() checks off hot paths, it's not free. NFC
authorSam McCall <sam.mccall@gmail.com>
Wed, 13 Jul 2022 19:11:44 +0000 (21:11 +0200)
committerSam McCall <sam.mccall@gmail.com>
Wed, 7 Sep 2022 14:18:31 +0000 (16:18 +0200)
commit897f3ddc6154fee9bc072f800ceab8202b236b0a
treec514798e91b70f8c5f42399d8c262dac7018bd56
parentfb9fc79809d5c2c3ab8809f7ff98fbfa8c3a9e7e
[Sema] Move Diags.isIgnored() checks off hot paths, it's not free. NFC

This speeds up clangd's buildAST() (i.e. parsing with a preamble) by 5% on
clangd/AST.cpp, by avoiding filling up the diagnostic state map with entries for
all the files where templates are being instantiated from.

(I would assume it has a similar effect on PCH and modules compiles).

This approach is obviously pretty fragile, and we should find ways to make
isIgnored() cheaper instead. But these changes in particular don't seem to make
the code worse in any case.

Differential Revision: https://reviews.llvm.org/D129683
clang/lib/Sema/Sema.cpp