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