Skip to content

Commit 7d8b4eb

Browse files
authored
[sanitizer][NFCI] Add Options parameter to LowerAllowCheckPass (#122765)
This is glue code to convert LowerAllowCheckPass from a FUNCTION_PASS to FUNCTION_PASS_WITH_PARAMS. The parameters are currently unused. Future work will plumb `-fsanitize-skip-hot-cutoff` (introduced in #121619) to LowerAllowCheckOptions.
1 parent 051612c commit 7d8b4eb

File tree

4 files changed

+33
-5
lines changed

4 files changed

+33
-5
lines changed

clang/lib/CodeGen/BackendUtil.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -795,11 +795,12 @@ static void addSanitizers(const Triple &TargetTriple,
795795
}
796796

797797
if (LowerAllowCheckPass::IsRequested()) {
798+
LowerAllowCheckPass::Options Opts;
798799
// We want to call it after inline, which is about OptimizerEarlyEPCallback.
799-
PB.registerOptimizerEarlyEPCallback([](ModulePassManager &MPM,
800-
OptimizationLevel Level,
801-
ThinOrFullLTOPhase Phase) {
802-
MPM.addPass(createModuleToFunctionPassAdaptor(LowerAllowCheckPass()));
800+
PB.registerOptimizerEarlyEPCallback([&Opts](ModulePassManager &MPM,
801+
OptimizationLevel Level,
802+
ThinOrFullLTOPhase Phase) {
803+
MPM.addPass(createModuleToFunctionPassAdaptor(LowerAllowCheckPass(Opts)));
803804
});
804805
}
805806
}

llvm/include/llvm/Transforms/Instrumentation/LowerAllowCheckPass.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,18 @@ namespace llvm {
2424
// from the hot code.
2525
class LowerAllowCheckPass : public PassInfoMixin<LowerAllowCheckPass> {
2626
public:
27+
struct Options {
28+
std::vector<unsigned int> placeholder; // TODO: cutoffs
29+
};
30+
31+
explicit LowerAllowCheckPass(LowerAllowCheckPass::Options Opts)
32+
: Opts(Opts) {};
2733
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
2834

2935
static bool IsRequested();
36+
37+
private:
38+
LowerAllowCheckPass::Options Opts;
3039
};
3140

3241
} // namespace llvm

llvm/lib/Passes/PassBuilder.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -821,6 +821,21 @@ Expected<EmbedBitcodeOptions> parseEmbedBitcodePassOptions(StringRef Params) {
821821
return Result;
822822
}
823823

824+
Expected<LowerAllowCheckPass::Options>
825+
parseLowerAllowCheckPassOptions(StringRef Params) {
826+
LowerAllowCheckPass::Options Result;
827+
while (!Params.empty()) {
828+
StringRef ParamName;
829+
std::tie(ParamName, Params) = Params.split(';');
830+
831+
return make_error<StringError>(
832+
formatv("invalid LowerAllowCheck pass parameter '{0}' ", ParamName)
833+
.str(),
834+
inconvertibleErrorCode());
835+
}
836+
return Result;
837+
}
838+
824839
Expected<MemorySanitizerOptions> parseMSanPassOptions(StringRef Params) {
825840
MemorySanitizerOptions Result;
826841
while (!Params.empty()) {

llvm/lib/Passes/PassRegistry.def

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -402,7 +402,6 @@ FUNCTION_PASS("loop-load-elim", LoopLoadEliminationPass())
402402
FUNCTION_PASS("loop-simplify", LoopSimplifyPass())
403403
FUNCTION_PASS("loop-sink", LoopSinkPass())
404404
FUNCTION_PASS("loop-versioning", LoopVersioningPass())
405-
FUNCTION_PASS("lower-allow-check", LowerAllowCheckPass())
406405
FUNCTION_PASS("lower-atomic", LowerAtomicPass())
407406
FUNCTION_PASS("lower-constant-intrinsics", LowerConstantIntrinsicsPass())
408407
FUNCTION_PASS("lower-expect", LowerExpectIntrinsicPass())
@@ -553,6 +552,10 @@ FUNCTION_PASS_WITH_PARAMS(
553552
parseLoopVectorizeOptions,
554553
"no-interleave-forced-only;interleave-forced-only;no-vectorize-forced-only;"
555554
"vectorize-forced-only")
555+
FUNCTION_PASS_WITH_PARAMS(
556+
"lower-allow-check", "LowerAllowCheckPass",
557+
[](LowerAllowCheckPass::Options Opts) { return LowerAllowCheckPass(Opts); },
558+
parseLowerAllowCheckPassOptions, "")
556559
FUNCTION_PASS_WITH_PARAMS(
557560
"lower-matrix-intrinsics", "LowerMatrixIntrinsicsPass",
558561
[](bool Minimal) { return LowerMatrixIntrinsicsPass(Minimal); },

0 commit comments

Comments
 (0)