| // RUN: %clang_cc1 %s -emit-llvm -triple s390x-none-zos -fexec-charset IBM-1047 -o - | FileCheck %s | |
| // RUN: %clang_cc1 %s -emit-llvm -triple s390x-none-zos -fexec-charset UTF-8 -DIBM1047_ONLY=1 -o - | FileCheck %s --check-prefix=CHECK-UTF8 | |
| const char *UpperCaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; | |
| //CHECK: c"\C1\C2\C3\C4\C5\C6\C7\C8\C9\D1\D2\D3\D4\D5\D6\D7\D8\D9\E2\E3\E4\E5\E6\E7\E8\E9\00" | |
| //CHECK-UTF8: c"ABCDEFGHIJKLMNOPQRSTUVWXYZ\00" | |
| const char *LowerCaseLetters = "abcdefghijklmnopqrstuvwxyz"; | |
| //CHECK: c"\81\82\83\84\85\86\87\88\89\91\92\93\94\95\96\97\98\99\A2\A3\A4\A5\A6\A7\A8\A9\00" | |
| //CHECK-UTF8: c"abcdefghijklmnopqrstuvwxyz\00" | |
| const char *Digits = "0123456789"; | |
| //CHECK: c"\F0\F1\F2\F3\F4\F5\F6\F7\F8\F9\00" | |
| //CHECK-UTF8: c"0123456789\00" | |
| const char *SpecialCharacters = " .<(+|&!$*);^-/,%%_>`:#@="; | |
| //CHECK: c"@KLMNOPZ[\\]^_`akllmnyz{|~\00" | |
| //CHECK-UTF8: c" .<(+|&!$*);^-/,%%_>`:#@=\00" | |
| const char *EscapeCharacters = "\a\b\f\n\r\t\v\\\'\"\?"; | |
| //CHECK: c"/\16\0C\15\0D\05\0B\E0}\7Fo\00" | |
| //CHECK-UTF8: c"\07\08\0C\0A\0D\09\0B\\'\22?\00" | |
| const char *InvalidEscape = "\y\z"; | |
| //CHECK: c"oo\00" | |
| //CHECK-UTF8: c"yz\00" | |
| const char *HexCharacters = "\x12\x13\x14"; | |
| //CHECK: c"\12\13\14\00" | |
| //CHECK-UTF8: c"\12\13\14\00" | |
| const char *OctalCharacters = "\141\142\143"; | |
| //CHECK: c"abc\00" | |
| //CHECK-UTF8: c"abc\00" | |
| const char singleChar = 'a'; | |
| //CHECK: i8 -127 | |
| //CHECK-UTF8: 97 | |
| #ifndef IBM1047_ONLY | |
| const char cent = '¢'; | |
| //CHECK: i8 74 | |
| const char currency = '¤'; | |
| //CHECK: i8 -97 | |
| #endif | |
| const char *UcnCharacters = "\u00E2\u00AC\U000000DF"; | |
| //CHECK: c"B\B0Y\00" | |
| //CHECK-UTF8: c"\C3\A2\C2\AC\C3\9F\00" | |
| const char *Unicode = "ÿ"; | |
| //CHECK: c"\DF\00" | |
| //CHECK-UTF8: c"\C3\BF\00" | |
| // RUN: not %clang_cc1 -fexec-charset invalid %s 2>&1 | FileCheck %s --check-prefix=CHECK-ERROR | |
| // CHECK-ERROR: error: failed to set fexec-charset to 'invalid' | |
| #define HELLO "Hello " | |
| #define WORLD "World!" | |
| #define HELLO_WORLD HELLO WORLD | |
| const char* hello_macro = HELLO; | |
| //CHECK: c"\C8\85\93\93\96@\00" | |
| //CHECK-UTF8 = c"Hello\00" | |
| const char* preprocessor_concatenation = HELLO_WORLD; | |
| //CHECK: c"\C8\85\93\93\96@\E6\96\99\93\84Z\00" | |
| //CHECK-UTF8: c"Hello World!\00" |