@@ -805,17 +805,21 @@ static void addSanitizers(const Triple &TargetTriple,
805
805
// SanitizeSkipHotCutoffs: doubles with range [0, 1]
806
806
// Opts.cutoffs: unsigned ints with range [0, 1000000]
807
807
auto ScaledCutoffs = CodeGenOpts.SanitizeSkipHotCutoffs .getAllScaled (1000000 );
808
-
808
+ uint64_t AllowRuntimeCheckSkipHotCutoff =
809
+ CodeGenOpts.AllowRuntimeCheckSkipHotCutoff .value_or (0.0 ) * 1000000 ;
809
810
// TODO: remove IsRequested()
810
- if (LowerAllowCheckPass::IsRequested () || ScaledCutoffs.has_value ()) {
811
+ if (LowerAllowCheckPass::IsRequested () || ScaledCutoffs.has_value () ||
812
+ CodeGenOpts.AllowRuntimeCheckSkipHotCutoff .has_value ()) {
811
813
// We want to call it after inline, which is about OptimizerEarlyEPCallback.
812
814
PB.registerOptimizerEarlyEPCallback (
813
- [ScaledCutoffs](ModulePassManager &MPM, OptimizationLevel Level,
814
- ThinOrFullLTOPhase Phase) {
815
+ [ScaledCutoffs, AllowRuntimeCheckSkipHotCutoff](
816
+ ModulePassManager &MPM, OptimizationLevel Level,
817
+ ThinOrFullLTOPhase Phase) {
815
818
LowerAllowCheckPass::Options Opts;
816
819
// TODO: after removing IsRequested(), make this unconditional
817
820
if (ScaledCutoffs.has_value ())
818
821
Opts.cutoffs = ScaledCutoffs.value ();
822
+ Opts.runtime_check = AllowRuntimeCheckSkipHotCutoff;
819
823
MPM.addPass (
820
824
createModuleToFunctionPassAdaptor (LowerAllowCheckPass (Opts)));
821
825
});
0 commit comments