Skip to content

Commit

Permalink
MSVC's implementation of isalnum will assert on characters > 255, so …
Browse files Browse the repository at this point in the history
…we need to use an unsigned char to ensure the integer promotion happens properly. This fixes an assert in debug builds with CodeGen\X86\utf8.ll

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160286 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
AaronBallman committed Jul 16, 2012
1 parent c0ed3e5 commit 09dab82
Showing 1 changed file with 5 additions and 1 deletion.
6 changes: 5 additions & 1 deletion lib/VMCore/AsmWriter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,11 @@ static void PrintLLVMName(raw_ostream &OS, StringRef Name, PrefixType Prefix) {
bool NeedsQuotes = isdigit(Name[0]);
if (!NeedsQuotes) {
for (unsigned i = 0, e = Name.size(); i != e; ++i) {
char C = Name[i];
// By making this unsigned, the value passed in to isalnum will always be
// in the range 0-255. This is important when building with MSVC because
// its implementation will assert. This situation can arise when dealing
// with UTF-8 multibyte characters.
unsigned char C = Name[i];
if (!isalnum(C) && C != '-' && C != '.' && C != '_') {
NeedsQuotes = true;
break;
Expand Down

0 comments on commit 09dab82

Please sign in to comment.