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