Index: lib/MC/MCParser/AsmLexer.cpp =================================================================== --- lib/MC/MCParser/AsmLexer.cpp +++ lib/MC/MCParser/AsmLexer.cpp @@ -280,7 +280,7 @@ return intToken(Result, Value); } - if (*CurPtr == 'b') { + if ((*CurPtr == 'b') || (*CurPtr == 'B')) { ++CurPtr; // See if we actually have "0b" as part of something like "jmp 0b\n" if (!isdigit(CurPtr[0])) { @@ -309,7 +309,7 @@ return intToken(Result, Value); } - if (*CurPtr == 'x') { + if ((*CurPtr == 'x') || (*CurPtr == 'X')) { ++CurPtr; const char *NumStart = CurPtr; while (isxdigit(CurPtr[0])) Index: lib/Support/StringRef.cpp =================================================================== --- lib/Support/StringRef.cpp +++ lib/Support/StringRef.cpp @@ -351,12 +351,12 @@ } static unsigned GetAutoSenseRadix(StringRef &Str) { - if (Str.startswith("0x")) { + if (Str.startswith("0x") || Str.startswith("0X")) { Str = Str.substr(2); return 16; } - if (Str.startswith("0b")) { + if (Str.startswith("0b") || Str.startswith("0B")) { Str = Str.substr(2); return 2; } Index: test/MC/AsmParser/uppercase-hex.s =================================================================== --- /dev/null +++ test/MC/AsmParser/uppercase-hex.s @@ -0,0 +1,7 @@ +# RUN: llvm-mc -triple i386-unknown-unknown %s | FileCheck %s + +foo: +.short 0X1 +# CHECK: .short 1 +.short 0B1 +# CHECK: .short 1