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