Skip to content

Commit 02c3d9e

Browse files
committed
Reapply "[sanitizer][NFCI] Add Options parameter to LowerAllowCheckPass" (llvm#122833)
This reverts commit 1515caf (llvm#122833) i.e., relands 7d8b4eb (llvm#122765), with the addition of std::move to fix a stack use-after-scope error.
1 parent 6e14f9b commit 02c3d9e

File tree

4 files changed

+34
-5
lines changed

4 files changed

+34
-5
lines changed

clang/lib/CodeGen/BackendUtil.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -795,11 +795,13 @@ 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 = std::move(Opts)](ModulePassManager &MPM,
801+
OptimizationLevel Level,
802+
ThinOrFullLTOPhase Phase) {
803+
MPM.addPass(createModuleToFunctionPassAdaptor(
804+
LowerAllowCheckPass(Opts)));
803805
});
804806
}
805807
}

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(std::move(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)