[libc][NFC] Add explicit casts to ctype functions

Reviewed By: sivachandra

Differential Revision: https://reviews.llvm.org/D106902
This commit is contained in:
Alfonso Gregory 2021-08-23 18:15:14 +00:00 committed by Siva Chandra Reddy
parent e100a41bbe
commit 9cdd4ea06f
16 changed files with 45 additions and 26 deletions

View File

@ -18,19 +18,21 @@ namespace internal {
// of a function call by inlining them.
// ------------------------------------------------------
static constexpr int isalpha(unsigned ch) { return (ch | 32) - 'a' < 26; }
static constexpr bool isalpha(unsigned ch) { return (ch | 32) - 'a' < 26; }
static constexpr int isdigit(unsigned ch) { return (ch - '0') < 10; }
static constexpr bool isdigit(unsigned ch) { return (ch - '0') < 10; }
static constexpr int isalnum(unsigned ch) { return isalpha(ch) || isdigit(ch); }
static constexpr bool isalnum(unsigned ch) {
return isalpha(ch) || isdigit(ch);
}
static constexpr int isgraph(unsigned ch) { return 0x20 < ch && ch < 0x7f; }
static constexpr bool isgraph(unsigned ch) { return 0x20 < ch && ch < 0x7f; }
static constexpr int islower(unsigned ch) { return (ch - 'a') < 26; }
static constexpr bool islower(unsigned ch) { return (ch - 'a') < 26; }
static constexpr int isupper(unsigned ch) { return (ch - 'A') < 26; }
static constexpr bool isupper(unsigned ch) { return (ch - 'A') < 26; }
static constexpr int isspace(unsigned ch) {
static constexpr bool isspace(unsigned ch) {
return ch == ' ' || (ch - '\t') < 5;
}

View File

@ -15,6 +15,8 @@ namespace __llvm_libc {
// TODO: Currently restricted to default locale.
// These should be extended using locale information.
LLVM_LIBC_FUNCTION(int, isalnum, (int c)) { return internal::isalnum(c); }
LLVM_LIBC_FUNCTION(int, isalnum, (int c)) {
return static_cast<int>(internal::isalnum(static_cast<unsigned>(c)));
}
} // namespace __llvm_libc

View File

@ -15,6 +15,8 @@ namespace __llvm_libc {
// TODO: Currently restricted to default locale.
// These should be extended using locale information.
LLVM_LIBC_FUNCTION(int, isalpha, (int c)) { return internal::isalpha(c); }
LLVM_LIBC_FUNCTION(int, isalpha, (int c)) {
return static_cast<int>(internal::isalpha(static_cast<unsigned>(c)));
}
} // namespace __llvm_libc

View File

@ -12,6 +12,8 @@
namespace __llvm_libc {
LLVM_LIBC_FUNCTION(int, isascii, (int c)) { return (c & (~0x7f)) == 0; }
LLVM_LIBC_FUNCTION(int, isascii, (int c)) {
return static_cast<int>((c & (~0x7f)) == 0);
}
} // namespace __llvm_libc

View File

@ -15,8 +15,8 @@ namespace __llvm_libc {
// TODO: Currently restricted to default locale.
// These should be extended using locale information.
LLVM_LIBC_FUNCTION(int, isblank, (int c)) {
const unsigned char ch = static_cast<char>(c);
return ch == ' ' || ch == '\t';
const unsigned char ch = static_cast<unsigned char>(c);
return static_cast<int>(ch == ' ' || ch == '\t');
}
} // namespace __llvm_libc

View File

@ -15,8 +15,8 @@ namespace __llvm_libc {
// TODO: Currently restricted to default locale.
// These should be extended using locale information.
LLVM_LIBC_FUNCTION(int, iscntrl, (int c)) {
const unsigned char ch = static_cast<char>(c);
return ch < 0x20 || ch == 0x7f;
const unsigned char ch = static_cast<unsigned char>(c);
return static_cast<int>(ch < 0x20 || ch == 0x7f);
}
} // namespace __llvm_libc

View File

@ -14,6 +14,8 @@ namespace __llvm_libc {
// TODO: Currently restricted to default locale.
// These should be extended using locale information.
LLVM_LIBC_FUNCTION(int, isdigit, (int c)) { return internal::isdigit(c); }
LLVM_LIBC_FUNCTION(int, isdigit, (int c)) {
return static_cast<int>(internal::isdigit(static_cast<unsigned>(c)));
}
} // namespace __llvm_libc

View File

@ -15,6 +15,8 @@ namespace __llvm_libc {
// TODO: Currently restricted to default locale.
// These should be extended using locale information.
LLVM_LIBC_FUNCTION(int, isgraph, (int c)) { return internal::isgraph(c); }
LLVM_LIBC_FUNCTION(int, isgraph, (int c)) {
return static_cast<int>(internal::isgraph(static_cast<unsigned>(c)));
}
} // namespace __llvm_libc

View File

@ -15,6 +15,8 @@ namespace __llvm_libc {
// TODO: Currently restricted to default locale.
// These should be extended using locale information.
LLVM_LIBC_FUNCTION(int, islower, (int c)) { return internal::islower(c); }
LLVM_LIBC_FUNCTION(int, islower, (int c)) {
return static_cast<int>(internal::islower(static_cast<unsigned>(c)));
}
} // namespace __llvm_libc

View File

@ -15,8 +15,8 @@ namespace __llvm_libc {
// TODO: Currently restricted to default locale.
// These should be extended using locale information.
LLVM_LIBC_FUNCTION(int, isprint, (int c)) {
const unsigned ch = c;
return (ch - ' ') < 95;
const unsigned ch = static_cast<unsigned>(c);
return static_cast<int>((ch - ' ') < 95);
}
} // namespace __llvm_libc

View File

@ -16,7 +16,8 @@ namespace __llvm_libc {
// TODO: Currently restricted to default locale.
// These should be extended using locale information.
LLVM_LIBC_FUNCTION(int, ispunct, (int c)) {
return !internal::isalnum(c) && internal::isgraph(c);
const unsigned ch = static_cast<unsigned>(c);
return static_cast<int>(!internal::isalnum(ch) && internal::isgraph(ch));
}
} // namespace __llvm_libc

View File

@ -15,6 +15,8 @@ namespace __llvm_libc {
// TODO: Currently restricted to default locale.
// These should be extended using locale information.
LLVM_LIBC_FUNCTION(int, isspace, (int c)) { return internal::isspace(c); }
LLVM_LIBC_FUNCTION(int, isspace, (int c)) {
return static_cast<int>(internal::isspace(static_cast<unsigned>(c)));
}
} // namespace __llvm_libc

View File

@ -15,6 +15,8 @@ namespace __llvm_libc {
// TODO: Currently restricted to default locale.
// These should be extended using locale information.
LLVM_LIBC_FUNCTION(int, isupper, (int c)) { return internal::isupper(c); }
LLVM_LIBC_FUNCTION(int, isupper, (int c)) {
return static_cast<int>(internal::isupper(static_cast<unsigned>(c)));
}
} // namespace __llvm_libc

View File

@ -16,8 +16,8 @@ namespace __llvm_libc {
// TODO: Currently restricted to default locale.
// These should be extended using locale information.
LLVM_LIBC_FUNCTION(int, isxdigit, (int c)) {
const unsigned ch = c;
return internal::isdigit(ch) || (ch | 32) - 'a' < 6;
const unsigned ch = static_cast<unsigned>(c);
return static_cast<int>(internal::isdigit(ch) || (ch | 32) - 'a' < 6);
}
} // namespace __llvm_libc

View File

@ -17,7 +17,7 @@ namespace __llvm_libc {
// These should be extended using locale information.
LLVM_LIBC_FUNCTION(int, tolower, (int c)) {
if (internal::isupper(c))
return c + 'a' - 'A';
return c + ('a' - 'A');
return c;
}

View File

@ -17,7 +17,7 @@ namespace __llvm_libc {
// These should be extended using locale information.
LLVM_LIBC_FUNCTION(int, toupper, (int c)) {
if (internal::islower(c))
return c + 'A' - 'a';
return c - ('a' - 'A');
return c;
}