Skip to content

Commit

Permalink
[NFC] [hwasan] factor out some opt handling (#84414)
Browse files Browse the repository at this point in the history
  • Loading branch information
fmayer committed Mar 13, 2024
1 parent ab9564c commit 0bb30f9
Showing 1 changed file with 18 additions and 29 deletions.
47 changes: 18 additions & 29 deletions llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,10 @@ static cl::opt<bool> ClUsePageAliases("hwasan-experimental-use-page-aliases",

namespace {

template <typename T> T optOr(cl::opt<T> &Opt, T Other) {
return Opt.getNumOccurrences() ? Opt : Other;
}

bool shouldUsePageAliases(const Triple &TargetTriple) {
return ClUsePageAliases && TargetTriple.getArch() == Triple::x86_64;
}
Expand All @@ -269,14 +273,11 @@ bool shouldInstrumentStack(const Triple &TargetTriple) {
}

bool shouldInstrumentWithCalls(const Triple &TargetTriple) {
return ClInstrumentWithCalls.getNumOccurrences()
? ClInstrumentWithCalls
: TargetTriple.getArch() == Triple::x86_64;
return optOr(ClInstrumentWithCalls, TargetTriple.getArch() == Triple::x86_64);
}

bool mightUseStackSafetyAnalysis(bool DisableOptimization) {
return ClUseStackSafety.getNumOccurrences() ? ClUseStackSafety
: !DisableOptimization;
return optOr(ClUseStackSafety, !DisableOptimization);
}

bool shouldUseStackSafetyAnalysis(const Triple &TargetTriple,
Expand All @@ -296,10 +297,8 @@ class HWAddressSanitizer {
HWAddressSanitizer(Module &M, bool CompileKernel, bool Recover,
const StackSafetyGlobalInfo *SSI)
: M(M), SSI(SSI) {
this->Recover = ClRecover.getNumOccurrences() > 0 ? ClRecover : Recover;
this->CompileKernel = ClEnableKhwasan.getNumOccurrences() > 0
? ClEnableKhwasan
: CompileKernel;
this->Recover = optOr(ClRecover, Recover);
this->CompileKernel = optOr(ClEnableKhwasan, CompileKernel);
this->Rng =
ClRandomSkipRate.getNumOccurrences() ? M.createRNG("hwasan") : nullptr;

Expand Down Expand Up @@ -625,19 +624,14 @@ void HWAddressSanitizer::initializeModule() {
bool NewRuntime =
!TargetTriple.isAndroid() || !TargetTriple.isAndroidVersionLT(30);

UseShortGranules =
ClUseShortGranules.getNumOccurrences() ? ClUseShortGranules : NewRuntime;
OutlinedChecks =
(TargetTriple.isAArch64() || TargetTriple.isRISCV64()) &&
TargetTriple.isOSBinFormatELF() &&
(ClInlineAllChecks.getNumOccurrences() ? !ClInlineAllChecks : !Recover);
UseShortGranules = optOr(ClUseShortGranules, NewRuntime);
OutlinedChecks = (TargetTriple.isAArch64() || TargetTriple.isRISCV64()) &&
TargetTriple.isOSBinFormatELF() &&
!optOr(ClInlineAllChecks, Recover);

InlineFastPath =
(ClInlineFastPathChecks.getNumOccurrences()
? ClInlineFastPathChecks
: !(TargetTriple.isAndroid() ||
TargetTriple.isOSFuchsia())); // These platforms may prefer less
// inlining to reduce binary size.
// These platforms may prefer less inlining to reduce binary size.
InlineFastPath = optOr(ClInlineFastPathChecks, !(TargetTriple.isAndroid() ||
TargetTriple.isOSFuchsia()));

if (ClMatchAllTag.getNumOccurrences()) {
if (ClMatchAllTag != -1) {
Expand All @@ -649,22 +643,17 @@ void HWAddressSanitizer::initializeModule() {
UseMatchAllCallback = !CompileKernel && MatchAllTag.has_value();

// If we don't have personality function support, fall back to landing pads.
InstrumentLandingPads = ClInstrumentLandingPads.getNumOccurrences()
? ClInstrumentLandingPads
: !NewRuntime;
InstrumentLandingPads = optOr(ClInstrumentLandingPads, !NewRuntime);

if (!CompileKernel) {
createHwasanCtorComdat();
bool InstrumentGlobals =
ClGlobals.getNumOccurrences() ? ClGlobals : NewRuntime;
bool InstrumentGlobals = optOr(ClGlobals, NewRuntime);

if (InstrumentGlobals && !UsePageAliases)
instrumentGlobals();

bool InstrumentPersonalityFunctions =
ClInstrumentPersonalityFunctions.getNumOccurrences()
? ClInstrumentPersonalityFunctions
: NewRuntime;
optOr(ClInstrumentPersonalityFunctions, NewRuntime);
if (InstrumentPersonalityFunctions)
instrumentPersonalityFunctions();
}
Expand Down

0 comments on commit 0bb30f9

Please sign in to comment.