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