1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 | // RUN: %clang -target le32-unknown-nacl -### %s -emit-llvm-only -c 2>&1 | FileCheck %s -check-prefix=ECHO // RUN: %clang -target le32-unknown-nacl %s -emit-llvm -S -c -o - | FileCheck %s // RUN: %clang -target le32-unknown-nacl %s -emit-llvm -S -c -pthread -o - | FileCheck %s -check-prefix=THREADS // ECHO: {{.*}} "-cc1" {{.*}}le32-unknown-nacl.c typedef __builtin_va_list va_list; typedef __SIZE_TYPE__ size_t; typedef __PTRDIFF_TYPE__ ptrdiff_t; extern "C" { // CHECK: @align_c = dso_local global i32 1 int align_c = __alignof(char); // CHECK: @align_s = dso_local global i32 2 int align_s = __alignof(short); // CHECK: @align_i = dso_local global i32 4 int align_i = __alignof(int); // CHECK: @align_l = dso_local global i32 4 int align_l = __alignof(long); // CHECK: @align_ll = dso_local global i32 8 int align_ll = __alignof(long long); // CHECK: @align_p = dso_local global i32 4 int align_p = __alignof(void*); // CHECK: @align_f = dso_local global i32 4 int align_f = __alignof(float); // CHECK: @align_d = dso_local global i32 8 int align_d = __alignof(double); // CHECK: @align_ld = dso_local global i32 8 int align_ld = __alignof(long double); // CHECK: @align_vl = dso_local global i32 4 int align_vl = __alignof(va_list); // CHECK: __LITTLE_ENDIAN__defined #ifdef __LITTLE_ENDIAN__ void __LITTLE_ENDIAN__defined() {} #endif // CHECK: __native_client__defined #ifdef __native_client__ void __native_client__defined() {} #endif // CHECK: __le32__defined #ifdef __le32__ void __le32__defined() {} #endif // CHECK: __pnacl__defined #ifdef __pnacl__ void __pnacl__defined() {} #endif // CHECK: unixdefined #ifdef unix void unixdefined() {} #endif // CHECK: __ELF__defined #ifdef __ELF__ void __ELF__defined() {} #endif // CHECK: _GNU_SOURCEdefined #ifdef _GNU_SOURCE void _GNU_SOURCEdefined() {} #endif // THREADS: _REENTRANTdefined // CHECK: _REENTRANTundefined #ifdef _REENTRANT void _REENTRANTdefined() {} #else void _REENTRANTundefined() {} #endif // Check types // CHECK: signext i8 @check_char() char check_char() { return 0; } // CHECK: signext i16 @check_short() short check_short() { return 0; } // CHECK: i32 @check_int() int check_int() { return 0; } // CHECK: i32 @check_long() long check_long() { return 0; } // CHECK: i64 @check_longlong() long long check_longlong() { return 0; } // CHECK: zeroext i8 @check_uchar() unsigned char check_uchar() { return 0; } // CHECK: zeroext i16 @check_ushort() unsigned short check_ushort() { return 0; } // CHECK: i32 @check_uint() unsigned int check_uint() { return 0; } // CHECK: i32 @check_ulong() unsigned long check_ulong() { return 0; } // CHECK: i64 @check_ulonglong() unsigned long long check_ulonglong() { return 0; } // CHECK: i32 @check_size_t() size_t check_size_t() { return 0; } // CHECK: float @check_float() float check_float() { return 0; } // CHECK: double @check_double() double check_double() { return 0; } // CHECK: double @check_longdouble() long double check_longdouble() { return 0; } } template<int> void Switch(); template<> void Switch<4>(); template<> void Switch<8>(); template<> void Switch<16>(); void check_pointer_size() { // CHECK: SwitchILi4 Switch<sizeof(void*)>(); // CHECK: SwitchILi8 Switch<sizeof(long long)>(); // CHECK: SwitchILi16 Switch<sizeof(va_list)>(); } |