1*67e74705SXin Li // RUN: %clang -target lanai-unknown-unknown -### %s -emit-llvm-only -c 2>&1 \ 2*67e74705SXin Li // RUN: | FileCheck %s -check-prefix=ECHO 3*67e74705SXin Li // RUN: %clang -target lanai-unknown-unknown %s -emit-llvm -S -o - \ 4*67e74705SXin Li // RUN: | FileCheck %s 5*67e74705SXin Li 6*67e74705SXin Li // ECHO: {{.*}} "-cc1" {{.*}}lanai-unknown-unknown.c 7*67e74705SXin Li 8*67e74705SXin Li typedef __builtin_va_list va_list; 9*67e74705SXin Li typedef __SIZE_TYPE__ size_t; 10*67e74705SXin Li typedef __PTRDIFF_TYPE__ ptrdiff_t; 11*67e74705SXin Li 12*67e74705SXin Li extern "C" { 13*67e74705SXin Li 14*67e74705SXin Li // CHECK: @align_c = global i32 1 15*67e74705SXin Li int align_c = __alignof(char); 16*67e74705SXin Li 17*67e74705SXin Li // CHECK: @align_s = global i32 2 18*67e74705SXin Li int align_s = __alignof(short); 19*67e74705SXin Li 20*67e74705SXin Li // CHECK: @align_i = global i32 4 21*67e74705SXin Li int align_i = __alignof(int); 22*67e74705SXin Li 23*67e74705SXin Li // CHECK: @align_l = global i32 4 24*67e74705SXin Li int align_l = __alignof(long); 25*67e74705SXin Li 26*67e74705SXin Li // CHECK: @align_ll = global i32 8 27*67e74705SXin Li int align_ll = __alignof(long long); 28*67e74705SXin Li 29*67e74705SXin Li // CHECK: @align_p = global i32 4 30*67e74705SXin Li int align_p = __alignof(void*); 31*67e74705SXin Li 32*67e74705SXin Li // CHECK: @align_vl = global i32 4 33*67e74705SXin Li int align_vl = __alignof(va_list); 34*67e74705SXin Li 35*67e74705SXin Li // Check types 36*67e74705SXin Li 37*67e74705SXin Li // CHECK: signext i8 @check_char() check_char()38*67e74705SXin Lichar check_char() { return 0; } 39*67e74705SXin Li 40*67e74705SXin Li // CHECK: signext i16 @check_short() check_short()41*67e74705SXin Lishort check_short() { return 0; } 42*67e74705SXin Li 43*67e74705SXin Li // CHECK: i32 @check_int() check_int()44*67e74705SXin Liint check_int() { return 0; } 45*67e74705SXin Li 46*67e74705SXin Li // CHECK: i32 @check_long() check_long()47*67e74705SXin Lilong check_long() { return 0; } 48*67e74705SXin Li 49*67e74705SXin Li // CHECK: i64 @check_longlong() check_longlong()50*67e74705SXin Lilong long check_longlong() { return 0; } 51*67e74705SXin Li 52*67e74705SXin Li // CHECK: zeroext i8 @check_uchar() check_uchar()53*67e74705SXin Liunsigned char check_uchar() { return 0; } 54*67e74705SXin Li 55*67e74705SXin Li // CHECK: zeroext i16 @check_ushort() check_ushort()56*67e74705SXin Liunsigned short check_ushort() { return 0; } 57*67e74705SXin Li 58*67e74705SXin Li // CHECK: i32 @check_uint() check_uint()59*67e74705SXin Liunsigned int check_uint() { return 0; } 60*67e74705SXin Li 61*67e74705SXin Li // CHECK: i32 @check_ulong() check_ulong()62*67e74705SXin Liunsigned long check_ulong() { return 0; } 63*67e74705SXin Li 64*67e74705SXin Li // CHECK: i64 @check_ulonglong() check_ulonglong()65*67e74705SXin Liunsigned long long check_ulonglong() { return 0; } 66*67e74705SXin Li 67*67e74705SXin Li // CHECK: i32 @check_size_t() check_size_t()68*67e74705SXin Lisize_t check_size_t() { return 0; } 69*67e74705SXin Li 70*67e74705SXin Li } 71*67e74705SXin Li 72*67e74705SXin Li template<int> void Switch(); 73*67e74705SXin Li template<> void Switch<4>(); 74*67e74705SXin Li template<> void Switch<8>(); 75*67e74705SXin Li template<> void Switch<16>(); 76*67e74705SXin Li check_pointer_size()77*67e74705SXin Livoid check_pointer_size() { 78*67e74705SXin Li // CHECK: SwitchILi4 79*67e74705SXin Li Switch<sizeof(void*)>(); 80*67e74705SXin Li 81*67e74705SXin Li // CHECK: SwitchILi8 82*67e74705SXin Li Switch<sizeof(long long)>(); 83*67e74705SXin Li 84*67e74705SXin Li // CHECK: SwitchILi4 85*67e74705SXin Li Switch<sizeof(va_list)>(); 86*67e74705SXin Li } 87