xref: /llvm-project/clang/test/C/C11/n1316.c (revision ba79c2a25069f09728625982c424920452fa6b83)
1 // RUN: %clang_cc1 -verify %s
2 
3 /* WG14 N1316: Yes
4  * Conversion between pointers and floating types
5  */
6 
7 void call_ptr(void *);  // expected-note {{passing argument to parameter here}}
8 void call_float(float); // expected-note {{passing argument to parameter here}}
9 
test(float in_f,void * in_vp)10 void test(float in_f, void *in_vp) {
11   float f = in_vp; // expected-error {{initializing 'float' with an expression of incompatible type 'void *'}}
12   void *vp = in_f; // expected-error {{initializing 'void *' with an expression of incompatible type 'float'}}
13 
14   call_ptr(f);    // expected-error {{passing 'float' to parameter of incompatible type 'void *'}}
15   call_float(vp); // expected-error {{passing 'void *' to parameter of incompatible type 'float'}}
16 
17   vp = f; // expected-error {{assigning to 'void *' from incompatible type 'float'}}
18   f = vp; // expected-error {{assigning to 'float' from incompatible type 'void *'}}
19 
20   struct S {
21     void *ptr;
22     float flt;
23   } s = { f, vp }; // expected-error {{initializing 'void *' with an expression of incompatible type 'float'}} \
24                       expected-error {{initializing 'float' with an expression of incompatible type 'void *'}}
25 }
26 
27