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