[NFC] Exctract getNoSanitizeMask lambda

This commit is contained in:
Vitaly Buka 2022-06-07 09:37:53 -07:00
parent f32ad5703e
commit d7df3f0a4b
1 changed files with 11 additions and 7 deletions

View File

@ -67,14 +67,18 @@ void SanitizerMetadata::reportGlobal(llvm::GlobalVariable *GV, const VarDecl &D,
llvm::raw_string_ostream OS(QualName); llvm::raw_string_ostream OS(QualName);
D.printQualifiedName(OS); D.printQualifiedName(OS);
bool IsExcluded = false; auto getNoSanitizeMask = [](const VarDecl &D) {
for (auto Attr : D.specific_attrs<NoSanitizeAttr>()) if (D.hasAttr<DisableSanitizerInstrumentationAttr>())
if (Attr->getMask() & SanitizerKind::Address) return SanitizerKind::All;
IsExcluded = true;
if (D.hasAttr<DisableSanitizerInstrumentationAttr>()) SanitizerMask NoSanitizeMask;
IsExcluded = true; for (auto *Attr : D.specific_attrs<NoSanitizeAttr>())
NoSanitizeMask |= Attr->getMask();
return NoSanitizeMask;
};
reportGlobal(GV, D.getLocation(), OS.str(), D.getType(), IsDynInit, reportGlobal(GV, D.getLocation(), OS.str(), D.getType(), IsDynInit,
IsExcluded); SanitizerSet{getNoSanitizeMask(D)}.has(SanitizerKind::Address));
} }
void SanitizerMetadata::reportGlobal(llvm::GlobalVariable *GV, void SanitizerMetadata::reportGlobal(llvm::GlobalVariable *GV,