[cfe-commits] r144521 - in /cfe/trunk: lib/Lex/LiteralSupport.cpp test/CodeGen/string-literal-unicode-conversion.c
Nico Weber
nicolasweber at gmx.de
Sun Nov 13 21:17:38 PST 2011
Author: nico
Date: Sun Nov 13 23:17:37 2011
New Revision: 144521
URL: http://llvm.org/viewvc/llvm-project?rev=144521&view=rev
Log:
Fix a regression in wide character codegen. See PR11369.
Modified:
cfe/trunk/lib/Lex/LiteralSupport.cpp
cfe/trunk/test/CodeGen/string-literal-unicode-conversion.c
Modified: cfe/trunk/lib/Lex/LiteralSupport.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/LiteralSupport.cpp?rev=144521&r1=144520&r2=144521&view=diff
==============================================================================
--- cfe/trunk/lib/Lex/LiteralSupport.cpp (original)
+++ cfe/trunk/lib/Lex/LiteralSupport.cpp Sun Nov 13 23:17:37 2011
@@ -1095,13 +1095,13 @@
// FIXME: Make the type of the result buffer correct instead of
// using reinterpret_cast.
UTF32 *ResultWidePtr = reinterpret_cast<UTF32*>(ResultPtr);
- *ResultWidePtr = ResultChar & 0xFF;
+ *ResultWidePtr = ResultChar;
ResultPtr += 4;
} else if (CharByteWidth == 2) {
// FIXME: Make the type of the result buffer correct instead of
// using reinterpret_cast.
UTF16 *ResultWidePtr = reinterpret_cast<UTF16*>(ResultPtr);
- *ResultWidePtr = ResultChar & 0xFF;
+ *ResultWidePtr = ResultChar & 0xFFFF;
ResultPtr += 2;
} else {
assert(CharByteWidth == 1 && "Unexpected char width");
Modified: cfe/trunk/test/CodeGen/string-literal-unicode-conversion.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/string-literal-unicode-conversion.c?rev=144521&r1=144520&r2=144521&view=diff
==============================================================================
--- cfe/trunk/test/CodeGen/string-literal-unicode-conversion.c (original)
+++ cfe/trunk/test/CodeGen/string-literal-unicode-conversion.c Sun Nov 13 23:17:37 2011
@@ -29,6 +29,11 @@
// CHECK-SHORTWCHAR: private unnamed_addr constant [6 x i16] [i16 1050, i16 1086, i16 1096, i16 1082, i16 1072, i16 0], align 2
// CHECK-CPP0X: private unnamed_addr constant [6 x i32] [i32 1050, i32 1086, i32 1096, i32 1082, i32 1072, i32 0], align 4
wchar_t const *b = L"ÐоÑка";
+
+ // CHECK-C: private unnamed_addr constant [4 x i32] [i32 20320, i32 22909, i32 66304, i32 0], align 4
+ // CHECK-SHORTWCHAR: private unnamed_addr constant [4 x i16] [i16 20320, i16 22909, i16 768, i16 0], align 2
+ // CHECK-CPP0X: private unnamed_addr constant [4 x i32] [i32 20320, i32 22909, i32 66304, i32 0], align 4
+ wchar_t const *b2 = L"\x4f60\x597d\x10300";
#if __cplusplus >= 201103L
More information about the cfe-commits
mailing list