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