[LLVMbugs] [Bug 12588] New: Wide character literal has wrong size when cross-compiling

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Wed Apr 18 09:22:05 PDT 2012


             Bug #: 12588
           Summary: Wide character literal has wrong size when
           Product: clang
           Version: 3.0
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: -New Bugs
        AssignedTo: unassignedclangbugs at nondot.org
        ReportedBy: shea at shealevy.com
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified

>From C99, section

"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.

More information about the llvm-bugs mailing list