[llvm] 656c5d6 - [clang][llvm][NFC] Change misexpect's tolerance option to be 32-bit
Paul Kirth via llvm-commits
llvm-commits at lists.llvm.org
Wed Aug 17 07:39:00 PDT 2022
Author: Paul Kirth
Date: 2022-08-17T14:38:53Z
New Revision: 656c5d652ce10257e90c7693b34336b6ce0ecfa3
URL: https://github.com/llvm/llvm-project/commit/656c5d652ce10257e90c7693b34336b6ce0ecfa3
DIFF: https://github.com/llvm/llvm-project/commit/656c5d652ce10257e90c7693b34336b6ce0ecfa3.diff
LOG: [clang][llvm][NFC] Change misexpect's tolerance option to be 32-bit
In D131869 we noticed that we jump through some hoops because we parse the
tolerance option used in MisExpect.cpp into a 64-bit integer. This is
unnecessary, since the value can only be in the range [0, 100).
This patch changes the underlying type to be 32-bit from where it is
parsed in Clang through to it's use in LLVM.
Reviewed By: jloser
Differential Revision: https://reviews.llvm.org/D131935
Added:
Modified:
clang/include/clang/Basic/CodeGenOptions.h
clang/lib/Frontend/CompilerInvocation.cpp
llvm/include/llvm/IR/LLVMContext.h
llvm/lib/IR/LLVMContext.cpp
llvm/lib/IR/LLVMContextImpl.h
llvm/lib/Transforms/Utils/MisExpect.cpp
Removed:
################################################################################
diff --git a/clang/include/clang/Basic/CodeGenOptions.h b/clang/include/clang/Basic/CodeGenOptions.h
index cd204e5d7c15..7fffb3833888 100644
--- a/clang/include/clang/Basic/CodeGenOptions.h
+++ b/clang/include/clang/Basic/CodeGenOptions.h
@@ -424,7 +424,7 @@ class CodeGenOptions : public CodeGenOptionsBase {
/// The maximum percentage profiling weights can deviate from the expected
/// values in order to be included in misexpect diagnostics.
- Optional<uint64_t> DiagnosticsMisExpectTolerance = 0;
+ Optional<uint32_t> DiagnosticsMisExpectTolerance = 0;
public:
// Define accessors/mutators for code generation options of enumeration type.
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp
index 7073828f8f6d..9731d4006d1e 100644
--- a/clang/lib/Frontend/CompilerInvocation.cpp
+++ b/clang/lib/Frontend/CompilerInvocation.cpp
@@ -113,8 +113,8 @@ using namespace llvm::opt;
// Parse misexpect tolerance argument value.
// Valid option values are integers in the range [0, 100)
-inline Expected<Optional<uint64_t>> parseToleranceOption(StringRef Arg) {
- int64_t Val;
+inline Expected<Optional<uint32_t>> parseToleranceOption(StringRef Arg) {
+ uint32_t Val;
if (Arg.getAsInteger(10, Val))
return llvm::createStringError(llvm::inconvertibleErrorCode(),
"Not an integer: %s", Arg.data());
diff --git a/llvm/include/llvm/IR/LLVMContext.h b/llvm/include/llvm/IR/LLVMContext.h
index 792e59a30362..0caddad25bfe 100644
--- a/llvm/include/llvm/IR/LLVMContext.h
+++ b/llvm/include/llvm/IR/LLVMContext.h
@@ -204,8 +204,8 @@ class LLVMContext {
bool getMisExpectWarningRequested() const;
void setMisExpectWarningRequested(bool Requested);
- void setDiagnosticsMisExpectTolerance(Optional<uint64_t> Tolerance);
- uint64_t getDiagnosticsMisExpectTolerance() const;
+ void setDiagnosticsMisExpectTolerance(Optional<uint32_t> Tolerance);
+ uint32_t getDiagnosticsMisExpectTolerance() const;
/// Return the minimum hotness value a diagnostic would need in order
/// to be included in optimization diagnostics.
diff --git a/llvm/lib/IR/LLVMContext.cpp b/llvm/lib/IR/LLVMContext.cpp
index 57d72611011e..993bfffff006 100644
--- a/llvm/lib/IR/LLVMContext.cpp
+++ b/llvm/lib/IR/LLVMContext.cpp
@@ -148,10 +148,10 @@ uint64_t LLVMContext::getDiagnosticsHotnessThreshold() const {
return pImpl->DiagnosticsHotnessThreshold.value_or(UINT64_MAX);
}
void LLVMContext::setDiagnosticsMisExpectTolerance(
- Optional<uint64_t> Tolerance) {
+ Optional<uint32_t> Tolerance) {
pImpl->DiagnosticsMisExpectTolerance = Tolerance;
}
-uint64_t LLVMContext::getDiagnosticsMisExpectTolerance() const {
+uint32_t LLVMContext::getDiagnosticsMisExpectTolerance() const {
return pImpl->DiagnosticsMisExpectTolerance.value_or(0);
}
diff --git a/llvm/lib/IR/LLVMContextImpl.h b/llvm/lib/IR/LLVMContextImpl.h
index a36e46fe2465..0b1e5194222f 100644
--- a/llvm/lib/IR/LLVMContextImpl.h
+++ b/llvm/lib/IR/LLVMContextImpl.h
@@ -1387,8 +1387,8 @@ class LLVMContextImpl {
Optional<uint64_t> DiagnosticsHotnessThreshold = 0;
/// The percentage of
diff erence between profiling branch weights and
- // llvm.expect branch weights to tolerate when emiting MisExpect diagnostics
- Optional<uint64_t> DiagnosticsMisExpectTolerance = 0;
+ /// llvm.expect branch weights to tolerate when emiting MisExpect diagnostics
+ Optional<uint32_t> DiagnosticsMisExpectTolerance = 0;
bool MisExpectWarningRequested = false;
/// The specialized remark streamer used by LLVM's OptimizationRemarkEmitter.
diff --git a/llvm/lib/Transforms/Utils/MisExpect.cpp b/llvm/lib/Transforms/Utils/MisExpect.cpp
index 8f94902b331f..28649b083f3b 100644
--- a/llvm/lib/Transforms/Utils/MisExpect.cpp
+++ b/llvm/lib/Transforms/Utils/MisExpect.cpp
@@ -58,7 +58,7 @@ static cl::opt<bool> PGOWarnMisExpect(
cl::desc("Use this option to turn on/off "
"warnings about incorrect usage of llvm.expect intrinsics."));
-static cl::opt<unsigned> MisExpectTolerance(
+static cl::opt<uint32_t> MisExpectTolerance(
"misexpect-tolerance", cl::init(0),
cl::desc("Prevents emiting diagnostics when profile counts are "
"within N% of the threshold.."));
@@ -72,7 +72,7 @@ bool isMisExpectDiagEnabled(LLVMContext &Ctx) {
}
uint64_t getMisExpectTolerance(LLVMContext &Ctx) {
- return std::max(static_cast<uint64_t>(MisExpectTolerance),
+ return std::max(static_cast<uint32_t>(MisExpectTolerance),
Ctx.getDiagnosticsMisExpectTolerance());
}
More information about the llvm-commits
mailing list