http://llvm.org/bugs/show_bug.cgi?id=12588
Bug #: 12588
Summary: Wide character literal has wrong size when
cross-compiling
Product: clang
Version: 3.0
Platform: PC
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P
Component: -New Bugs
AssignedTo: [email protected]
ReportedBy: [email protected]
CC: [email protected]
Classification: Unclassified
From C99, section 6.4.4.4:
"A wide character constant has type wchar_t, an integer type deļ¬ned in the
<stddef.h> header."
However, the following program does not always return the expected 1:
#include <stddef.h>
int main() {
return (sizeof(wchar_t) == sizeof L'\0');
}
In particular, when compiling on x86-64 Linux targeting Linux this works as
expected, and when compiling on x86-64 Windows targeting Windows it also works.
Compiling the program with '-ccc-host-triple x86_64-pc-win32-coff' on Linux,
however, produces an object file that will return 0, and further investigation
shows that the size of L'\0' is 4 (incorrect) and the size of wchar_t is 2
(expected). Moreover, in the cross-compilation environment the type of L"" is
"unsigned short[1]" but the type of L'\0' is "int".
--
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs