blob: 25ef1d03a4fe7b6e47761783a33c8c721137b1b8 [file] [log] [blame]
David Blaikie9b29f4f2012-10-16 18:53:14 +00001// RUN: %clang_cc1 -fsyntax-only -triple x86_64-unknown-unknown %s -verify
Chris Lattner3da2db42007-10-29 04:26:44 +00002
3typedef struct { unsigned long bits[(((1) + (64) - 1) / (64))]; } cpumask_t;
4cpumask_t x;
5void foo() {
6 (void)x;
7}
Eli Friedman41826bb2009-05-01 02:23:58 +00008void bar() {
9 char* a;
10 double b;
11 b = (double)a; // expected-error {{pointer cannot be cast to type}}
12 a = (char*)b; // expected-error {{cannot be cast to a pointer type}}
13}
Chris Lattner3da2db42007-10-29 04:26:44 +000014
Fariborz Jahaniana79f8b32009-11-23 19:51:43 +000015long bar1(long *next) {
16 return (long)(*next)++;
17}
18
Abramo Bagnara927b1802010-12-28 17:19:27 +000019typedef _Bool Bool;
20typedef int Int;
21typedef long Long;
22typedef float Float;
23typedef double Double;
24typedef _Complex int CInt;
25typedef _Complex long CLong;
26typedef _Complex float CFloat;
27typedef _Complex double CDouble;
28typedef void *VoidPtr;
29typedef char *CharPtr;
30
31void testBool(Bool v) {
32 (void) (Bool) v;
33 (void) (Int) v;
34 (void) (Long) v;
35 (void) (Float) v;
36 (void) (Double) v;
37 (void) (CInt) v;
38 (void) (CLong) v;
39 (void) (CFloat) v;
40 (void) (CDouble) v;
41 (void) (VoidPtr) v;
42 (void) (CharPtr) v;
43}
44
45void testInt(Int v) {
46 (void) (Bool) v;
47 (void) (Int) v;
48 (void) (Long) v;
49 (void) (Float) v;
50 (void) (Double) v;
51 (void) (CInt) v;
52 (void) (CLong) v;
53 (void) (CFloat) v;
54 (void) (CDouble) v;
David Blaikie9b29f4f2012-10-16 18:53:14 +000055 (void) (VoidPtr) v; // expected-warning{{cast to 'VoidPtr' (aka 'void *') from smaller integer type 'Int' (aka 'int')}}
56 (void) (CharPtr) v; // expected-warning{{cast to 'CharPtr' (aka 'char *') from smaller integer type 'Int' (aka 'int')}}
Abramo Bagnara927b1802010-12-28 17:19:27 +000057}
58
59void testLong(Long v) {
60 (void) (Bool) v;
61 (void) (Int) v;
62 (void) (Long) v;
63 (void) (Float) v;
64 (void) (Double) v;
65 (void) (CInt) v;
66 (void) (CLong) v;
67 (void) (CFloat) v;
68 (void) (CDouble) v;
69 (void) (VoidPtr) v;
70 (void) (CharPtr) v;
71}
72
73void testFloat(Float v) {
74 (void) (Bool) v;
75 (void) (Int) v;
76 (void) (Long) v;
77 (void) (Float) v;
78 (void) (Double) v;
79 (void) (CInt) v;
80 (void) (CLong) v;
81 (void) (CFloat) v;
82 (void) (CDouble) v;
83}
84
85void testDouble(Double v) {
86 (void) (Bool) v;
87 (void) (Int) v;
88 (void) (Long) v;
89 (void) (Float) v;
90 (void) (Double) v;
91 (void) (CInt) v;
92 (void) (CLong) v;
93 (void) (CFloat) v;
94 (void) (CDouble) v;
95}
96
97void testCI(CInt v) {
98 (void) (Bool) v;
99 (void) (Int) v;
100 (void) (Long) v;
101 (void) (Float) v;
102 (void) (Double) v;
103 (void) (CInt) v;
104 (void) (CLong) v;
105 (void) (CFloat) v;
106 (void) (CDouble) v;
107}
108
109void testCLong(CLong v) {
110 (void) (Bool) v;
111 (void) (Int) v;
112 (void) (Long) v;
113 (void) (Float) v;
114 (void) (Double) v;
115 (void) (CInt) v;
116 (void) (CLong) v;
117 (void) (CFloat) v;
118 (void) (CDouble) v;
119}
120
121void testCFloat(CFloat v) {
122 (void) (Bool) v;
123 (void) (Int) v;
124 (void) (Long) v;
125 (void) (Float) v;
126 (void) (Double) v;
127 (void) (CInt) v;
128 (void) (CLong) v;
129 (void) (CFloat) v;
130 (void) (CDouble) v;
131}
132
133void testCDouble(CDouble v) {
134 (void) (Bool) v;
135 (void) (Int) v;
136 (void) (Long) v;
137 (void) (Float) v;
138 (void) (Double) v;
139 (void) (CInt) v;
140 (void) (CLong) v;
141 (void) (CFloat) v;
142 (void) (CDouble) v;
143}
144
145void testVoidPtr(VoidPtr v) {
146 (void) (Bool) v;
147 (void) (Int) v;
148 (void) (Long) v;
149 (void) (VoidPtr) v;
150 (void) (CharPtr) v;
151}
152
153void testCharPtr(CharPtr v) {
154 (void) (Bool) v;
155 (void) (Int) v;
156 (void) (Long) v;
157 (void) (VoidPtr) v;
158 (void) (CharPtr) v;
159}
David Blaikie9b29f4f2012-10-16 18:53:14 +0000160
161typedef enum { x_a, x_b } X;
162void *intToPointerCast2(X x) {
163 return (void*)x;
164}
165
166void *intToPointerCast3() {
167 return (void*)(1 + 3);
168}