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