Skip to content

Address a handful of C4146 compiler warnings where literals can be replaced with std::numeric_limits #147623

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 7 commits into from
Jul 9, 2025
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions clang/lib/AST/ExprConstant.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1428,11 +1428,11 @@ namespace {
}
bool destroy(bool RunDestructors = true) {
bool OK = cleanup(Info, RunDestructors, OldStackSize);
OldStackSize = -1U;
OldStackSize = std::numeric_limits<unsigned>::max();
return OK;
}
~ScopeRAII() {
if (OldStackSize != -1U)
if (OldStackSize != std::numeric_limits<unsigned>::max())
destroy(false);
// Body moved to a static method to encourage the compiler to inline away
// instances of this class.
Expand Down
7 changes: 5 additions & 2 deletions clang/lib/Format/Format.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@
#include "UnwrappedLineFormatter.h"
#include "UsingDeclarationsSorter.h"
#include "clang/Tooling/Inclusions/HeaderIncludes.h"

#include "llvm/ADT/Sequence.h"
#include <limits>

#define DEBUG_TYPE "format-formatter"

Expand Down Expand Up @@ -777,7 +779,7 @@ template <> struct MappingTraits<FormatStyle::SpacesInLineComment> {
IO.mapOptional("Maximum", signedMaximum);
Space.Maximum = static_cast<unsigned>(signedMaximum);

if (Space.Maximum != -1u)
if (Space.Maximum != std::numeric_limits<unsigned>::max())
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
if (Space.Maximum != std::numeric_limits<unsigned>::max())
if (Space.Maximum < UINT_MAX)

as that's what's used elsewhere in the file.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On further consideration, I think it would be cleaner to stay consistent with using numeric_limits for all of the updates. And given that there are only a handful of UINT_MAX cases in this file I've swapped them to use numeric_limits for consistency. That would be the preferred choice if this were new code anyways.

Space.Minimum = std::min(Space.Minimum, Space.Maximum);
}
};
Expand Down Expand Up @@ -1672,7 +1674,8 @@ FormatStyle getLLVMStyle(FormatStyle::LanguageKind Language) {
LLVMStyle.SpacesBeforeTrailingComments = 1;
LLVMStyle.SpacesInAngles = FormatStyle::SIAS_Never;
LLVMStyle.SpacesInContainerLiterals = true;
LLVMStyle.SpacesInLineCommentPrefix = {/*Minimum=*/1, /*Maximum=*/-1u};
LLVMStyle.SpacesInLineCommentPrefix = {
/*Minimum=*/1, /*Maximum=*/std::numeric_limits<unsigned>::max()};
LLVMStyle.SpacesInParens = FormatStyle::SIPO_Never;
LLVMStyle.SpacesInSquareBrackets = false;
LLVMStyle.Standard = FormatStyle::LS_Latest;
Expand Down
3 changes: 2 additions & 1 deletion clang/lib/Lex/Lexer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
#include <cstddef>
#include <cstdint>
#include <cstring>
#include <limits>
#include <optional>
#include <string>
#include <tuple>
Expand Down Expand Up @@ -3456,7 +3457,7 @@ std::optional<uint32_t> Lexer::tryReadNumericUCN(const char *&StartPtr,
}

unsigned Value = llvm::hexDigitValue(C);
if (Value == -1U) {
if (Value == std::numeric_limits<unsigned>::max()) {
if (!Delimited)
break;
if (Diagnose)
Expand Down
6 changes: 4 additions & 2 deletions clang/lib/Sema/SemaExpr.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@
#include "llvm/Support/SaveAndRestore.h"
#include "llvm/Support/TimeProfiler.h"
#include "llvm/Support/TypeSize.h"
#include <limits>
#include <optional>

using namespace clang;
Expand Down Expand Up @@ -1906,7 +1907,7 @@ ExprResult Sema::CreateGenericSelectionExpr(
}

SmallVector<unsigned, 1> CompatIndices;
unsigned DefaultIndex = -1U;
unsigned DefaultIndex = std::numeric_limits<unsigned>::max();
// Look at the canonical type of the controlling expression in case it was a
// deduced type like __auto_type. However, when issuing diagnostics, use the
// type the user wrote in source rather than the canonical one.
Expand Down Expand Up @@ -1961,7 +1962,8 @@ ExprResult Sema::CreateGenericSelectionExpr(
// C11 6.5.1.1p2 "If a generic selection has no default generic association,
// its controlling expression shall have type compatible with exactly one of
// the types named in its generic association list."
if (DefaultIndex == -1U && CompatIndices.size() == 0) {
if (DefaultIndex == std::numeric_limits<unsigned>::max() &&
CompatIndices.size() == 0) {
auto P = GetControllingRangeAndType(ControllingExpr, ControllingType);
SourceRange SR = P.first;
Diag(SR.getBegin(), diag::err_generic_sel_no_match) << SR << P.second;
Expand Down