[clang] [ubsan] Connect -fsanitize-skip-hot-cutoff to LowerAllowCheckPass<cutoffs> (PR #124857)

via cfe-commits cfe-commits at lists.llvm.org
Wed Jan 29 11:01:00 PST 2025


github-actions[bot] wrote:

<!--LLVM CODE FORMAT COMMENT: {clang-format}-->


:warning: C/C++ code formatter, clang-format found issues in your code. :warning:

<details>
<summary>
You can test this locally with the following command:
</summary>

``````````bash
git-clang-format --diff a080498c92e4c00f099dab1a3d5dac48f14b7492 9a3ff427202d1e4cf089732c73d07c2fc90d83da --extensions h,c,cpp -- clang/include/clang/Basic/Sanitizers.h clang/lib/Basic/Sanitizers.cpp clang/lib/CodeGen/BackendUtil.cpp clang/lib/CodeGen/CGExpr.cpp clang/lib/Frontend/CompilerInvocation.cpp clang/test/CodeGen/allow-ubsan-check-inline.c clang/test/CodeGen/allow-ubsan-check.c
``````````

</details>

<details>
<summary>
View the diff from clang-format here.
</summary>

``````````diff
diff --git a/clang/lib/Basic/Sanitizers.cpp b/clang/lib/Basic/Sanitizers.cpp
index a7d0cc73f1..1a6833b179 100644
--- a/clang/lib/Basic/Sanitizers.cpp
+++ b/clang/lib/Basic/Sanitizers.cpp
@@ -44,23 +44,23 @@ std::optional<double> SanitizerMaskCutoffs::operator[](unsigned Kind) const {
 
 void SanitizerMaskCutoffs::clear(SanitizerMask K) { set(K, 0); }
 
-std::optional<std::vector<int>> SanitizerMaskCutoffs::getAllScaled(int ScalingFactor) const {
-    std::vector<int> scaledCutoffs;
-
-    bool anyNonZero = false;
-    for (unsigned int i = 0; i < SanitizerKind::SO_Count; ++i) {
-      int scaled = round((operator[](i)).value_or(0) * ScalingFactor);
-      scaledCutoffs.push_back(scaled);
-      anyNonZero |= (scaled != 0);
-    }
+std::optional<std::vector<int>>
+SanitizerMaskCutoffs::getAllScaled(int ScalingFactor) const {
+  std::vector<int> scaledCutoffs;
+
+  bool anyNonZero = false;
+  for (unsigned int i = 0; i < SanitizerKind::SO_Count; ++i) {
+    int scaled = round((operator[](i)).value_or(0) * ScalingFactor);
+    scaledCutoffs.push_back(scaled);
+    anyNonZero |= (scaled != 0);
+  }
 
-    if (anyNonZero)
-      return scaledCutoffs;
+  if (anyNonZero)
+    return scaledCutoffs;
 
-    return std::nullopt;
+  return std::nullopt;
 }
 
-
 // Once LLVM switches to C++17, the constexpr variables can be inline and we
 // won't need this.
 #define SANITIZER(NAME, ID) constexpr SanitizerMask SanitizerKind::ID;
diff --git a/clang/lib/CodeGen/BackendUtil.cpp b/clang/lib/CodeGen/BackendUtil.cpp
index ef410fb53c..83d1f9b972 100644
--- a/clang/lib/CodeGen/BackendUtil.cpp
+++ b/clang/lib/CodeGen/BackendUtil.cpp
@@ -797,7 +797,8 @@ static void addSanitizers(const Triple &TargetTriple,
 
   // SanitizeSkipHotCutoffs: doubles with range [0, 1]
   // Opts.cutoffs: ints with range [0, 1000000]
-  std::optional<std::vector<int>> scaledCutoffs = CodeGenOpts.SanitizeSkipHotCutoffs.getAllScaled(1000000);
+  std::optional<std::vector<int>> scaledCutoffs =
+      CodeGenOpts.SanitizeSkipHotCutoffs.getAllScaled(1000000);
 
   // TODO: remove IsRequested()
   if (LowerAllowCheckPass::IsRequested() || scaledCutoffs.has_value()) {
@@ -809,7 +810,8 @@ static void addSanitizers(const Triple &TargetTriple,
 
       if (scaledCutoffs.has_value()) {
         // Copy from std::vector<int> to std::vector<unsigned int>
-        Opts.cutoffs = {scaledCutoffs.value().begin(), scaledCutoffs.value().end()};
+        Opts.cutoffs = {scaledCutoffs.value().begin(),
+                        scaledCutoffs.value().end()};
       } else {
         // TODO: remove this after we remove IsRequested()
         for (unsigned int i = 0; i < SanitizerKind::SO_Count; ++i) {

``````````

</details>


https://github.com/llvm/llvm-project/pull/124857


More information about the cfe-commits mailing list