| // RUN: %clang_cc1 -emit-llvm -o - %s -fpascal-strings -fshort-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: c"\03\00b\00a\00r\00\00\00" |
| // CHECK: c"\04\00g\00o\00r\00f\00\00\00" |
| |
| |
| // PR8856 - -fshort-wchar makes wchar_t be unsigned. |
| // CHECK: @test2 |
| // CHECK: volatile store i32 1, i32* %isUnsigned |
| void test2() { |
| volatile int isUnsigned = (wchar_t)-1 > (wchar_t)0; |
| } |