1 // RUN: %clang_cc1 -triple aarch64-none-linux-gnu -emit-llvm -w -o - %s | FileCheck %s 2 3 // char by definition has size 1 4 5 int check_short() { 6 return sizeof(short); 7 // CHECK: ret i32 2 8 } 9 10 int check_int() { 11 return sizeof(int); 12 // CHECK: ret i32 4 13 } 14 15 int check_long() { 16 // Both 4 and 8 are permitted under the PCS, Linux says 8! 17 return sizeof(long); 18 // CHECK: ret i32 8 19 } 20 21 int check_longlong() { 22 return sizeof(long long); 23 // CHECK: ret i32 8 24 } 25 26 int check_int128() { 27 return sizeof(__int128); 28 // CHECK: ret i32 16 29 } 30 31 int check_fp16() { 32 return sizeof(__fp16); 33 // CHECK: ret i32 2 34 } 35 36 int check_float() { 37 return sizeof(float); 38 // CHECK: ret i32 4 39 } 40 41 int check_double() { 42 return sizeof(double); 43 // CHECK: ret i32 8 44 } 45 46 int check_longdouble() { 47 return sizeof(long double); 48 // CHECK: ret i32 16 49 } 50 51 int check_floatComplex() { 52 return sizeof(float _Complex); 53 // CHECK: ret i32 8 54 } 55 56 int check_doubleComplex() { 57 return sizeof(double _Complex); 58 // CHECK: ret i32 16 59 } 60 61 int check_longdoubleComplex() { 62 return sizeof(long double _Complex); 63 // CHECK: ret i32 32 64 } 65 66 int check_bool() { 67 return sizeof(_Bool); 68 // CHECK: ret i32 1 69 } 70 71 int check_wchar() { 72 // PCS allows either unsigned short or unsigned int. Linux again says "bigger!" 73 return sizeof(__WCHAR_TYPE__); 74 // CHECK: ret i32 4 75 } 76 77 int check_wchar_unsigned() { 78 return (__WCHAR_TYPE__)-1 > (__WCHAR_TYPE__)0; 79 // CHECK: ret i32 1 80 } 81 82 enum Small { 83 Item 84 }; 85 86 int foo() { 87 return sizeof(enum Small); 88 // CHECK: ret i32 4 89 } 90 91