blob: 6f2f79d11c9e2e98f6e7a61daf89cd3d80778b66 [file] [log] [blame]
Ivan Krasinbba43ef2011-08-24 21:22:25 +00001// RUN: %clang -ccc-host-triple le32-unknown-nacl -ccc-echo %s -emit-llvm -c 2>&1 | FileCheck %s -check-prefix=ECHO
2// RUN: %clang -ccc-host-triple le32-unknown-nacl %s -emit-llvm -S -c -o - | FileCheck %s
Ivan Krasinef05abd2011-08-24 20:22:22 +00003
Ivan Krasinbba43ef2011-08-24 21:22:25 +00004// ECHO: clang{{.*}} -cc1 {{.*}}le32-unknown-nacl.c
Ivan Krasinef05abd2011-08-24 20:22:22 +00005
6// Check platform defines
7#include <stddef.h>
8
9extern "C" {
10
11#ifdef __native_client__
12void __native_client__defined() {
13 // CHECK: __native_client__defined
14}
15#endif
16
17#ifdef __le32__
18void __le32__defined() {
19 // CHECK: __le32__defined
20}
21#endif
22
23#ifdef __pnacl__
24void __pnacl__defined() {
25 // CHECK: __pnacl__defined
26}
27#endif
28
29// Check types
30
31// CHECK: signext i8 @check_char()
32char check_char() { return 0; }
33
34// CHECK: signext i16 @check_short()
35short check_short() { return 0; }
36
37// CHECK: i32 @check_int()
38int check_int() { return 0; }
39
40// CHECK: i32 @check_long()
41long check_long() { return 0; }
42
43// CHECK: i64 @check_longlong()
44long long check_longlong() { return 0; }
45
46// CHECK: zeroext i8 @check_uchar()
47unsigned char check_uchar() { return 0; }
48
49// CHECK: zeroext i16 @check_ushort()
50unsigned short check_ushort() { return 0; }
51
52// CHECK: i32 @check_uint()
53unsigned int check_uint() { return 0; }
54
55// CHECK: i32 @check_ulong()
56unsigned long check_ulong() { return 0; }
57
58// CHECK: i64 @check_ulonglong()
59unsigned long long check_ulonglong() { return 0; }
60
61// CHECK: i32 @check_size_t()
62size_t check_size_t() { return 0; }
63
64// CHECK: float @check_float()
65float check_float() { return 0; }
66
67// CHECK: double @check_double()
68double check_double() { return 0; }
69
Ivan Krasinbba43ef2011-08-24 21:22:25 +000070// CHECK: double @check_longdouble()
71long double check_longdouble() { return 0; }
72
Ivan Krasinef05abd2011-08-24 20:22:22 +000073}
74
Ivan Krasinbba43ef2011-08-24 21:22:25 +000075#include <stdarg.h>
Ivan Krasinef05abd2011-08-24 20:22:22 +000076
77template<int> void Switch();
78template<> void Switch<4>();
79template<> void Switch<8>();
Ivan Krasinbba43ef2011-08-24 21:22:25 +000080template<> void Switch<16>();
Ivan Krasinef05abd2011-08-24 20:22:22 +000081
82void check_pointer_size() {
83 // CHECK: SwitchILi4
84 Switch<sizeof(void*)>();
85
86 // CHECK: SwitchILi8
87 Switch<sizeof(long long)>();
Ivan Krasinbba43ef2011-08-24 21:22:25 +000088
89 // CHECK: SwitchILi16
90 Switch<sizeof(va_list)>();
Ivan Krasinef05abd2011-08-24 20:22:22 +000091}