| // RUN: %clang_cc1 -emit-llvm -o - %s -fpascal-strings -fwchar-type=short -fno-signed-wchar | FileCheck %s |
| // rdar://8020384 |
| |
| #include <stddef.h> |
| |
| extern void abort (void); |
| |
| typedef unsigned short UInt16; |
| |
| typedef UInt16 UniChar; |
| |
| int main(int argc, char* argv[]) |
| { |
| |
| char st[] = "\pfoo"; // pascal string |
| UniChar wt[] = L"\pbar"; // pascal Unicode string |
| UniChar wt1[] = L"\p"; |
| UniChar wt2[] = L"\pgorf"; |
| |
| if (st[0] != 3) |
| abort (); |
| if (wt[0] != 3) |
| abort (); |
| if (wt1[0] != 0) |
| abort (); |
| if (wt2[0] != 4) |
| abort (); |
| |
| return 0; |
| } |
| |
| // CHECK: [i16 3, i16 98, i16 97, i16 114, i16 0] |
| // CHECK: [i16 4, i16 103, i16 111, i16 114, i16 102, i16 0] |
| |
| |
| // PR8856 - -fshort-wchar makes wchar_t be unsigned. |
| // CHECK: @test2 |
| // CHECK: store volatile i32 1, i32* %isUnsigned |
| void test2() { |
| volatile int isUnsigned = (wchar_t)-1 > (wchar_t)0; |
| } |