forked from OSchip/llvm-project
[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
This commit is contained in:
parent
fb9fc79809
commit
897f3ddc61
|
@ -575,10 +575,7 @@ void Sema::diagnoseNullableToNonnullConversion(QualType DstType,
|
|||
Diag(Loc, diag::warn_nullability_lost) << SrcType << DstType;
|
||||
}
|
||||
|
||||
void Sema::diagnoseZeroToNullptrConversion(CastKind Kind, const Expr* E) {
|
||||
if (Diags.isIgnored(diag::warn_zero_as_null_pointer_constant,
|
||||
E->getBeginLoc()))
|
||||
return;
|
||||
void Sema::diagnoseZeroToNullptrConversion(CastKind Kind, const Expr *E) {
|
||||
// nullptr only exists from C++11 on, so don't warn on its absence earlier.
|
||||
if (!getLangOpts().CPlusPlus11)
|
||||
return;
|
||||
|
@ -588,6 +585,10 @@ void Sema::diagnoseZeroToNullptrConversion(CastKind Kind, const Expr* E) {
|
|||
if (E->IgnoreParenImpCasts()->getType()->isNullPtrType())
|
||||
return;
|
||||
|
||||
if (Diags.isIgnored(diag::warn_zero_as_null_pointer_constant,
|
||||
E->getBeginLoc()))
|
||||
return;
|
||||
|
||||
// Don't diagnose the conversion from a 0 literal to a null pointer argument
|
||||
// in a synthesized call to operator<=>.
|
||||
if (!CodeSynthesisContexts.empty() &&
|
||||
|
|
Loading…
Reference in New Issue