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()); } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits