1 | // RUN: %clang_cc1 -emit-llvm -o - %s -fpascal-strings -fwchar-type=short -fno-signed-wchar | FileCheck %s |
2 | // rdar://8020384 |
3 | |
4 | #include <stddef.h> |
5 | |
6 | extern void abort (void); |
7 | |
8 | typedef unsigned short UInt16; |
9 | |
10 | typedef UInt16 UniChar; |
11 | |
12 | int main(int argc, char* argv[]) |
13 | { |
14 | |
15 | char st[] = "\pfoo"; // pascal string |
16 | UniChar wt[] = L"\pbar"; // pascal Unicode string |
17 | UniChar wt1[] = L"\p"; |
18 | UniChar wt2[] = L"\pgorf"; |
19 | |
20 | if (st[0] != 3) |
21 | abort (); |
22 | if (wt[0] != 3) |
23 | abort (); |
24 | if (wt1[0] != 0) |
25 | abort (); |
26 | if (wt2[0] != 4) |
27 | abort (); |
28 | |
29 | return 0; |
30 | } |
31 | |
32 | // CHECK: [i16 3, i16 98, i16 97, i16 114, i16 0] |
33 | // CHECK: [i16 4, i16 103, i16 111, i16 114, i16 102, i16 0] |
34 | |
35 | |
36 | // PR8856 - -fshort-wchar makes wchar_t be unsigned. |
37 | // CHECK: @test2 |
38 | // CHECK: store volatile i32 1, i32* %isUnsigned |
39 | void test2() { |
40 | volatile int isUnsigned = (wchar_t)-1 > (wchar_t)0; |
41 | } |
42 | |