]>
git.proxmox.com Git - rustc.git/blob - src/llvm/tools/clang/test/Sema/pointer-addition.c
1 // RUN: %clang_cc1 %s -fsyntax-only -verify -pedantic
3 typedef struct S S
; // expected-note 3 {{forward declaration of 'struct S'}}
4 void a(S
* b
, void* c
) {
6 b
++; // expected-error {{arithmetic on a pointer to an incomplete type}}
7 b
+= 1; // expected-error {{arithmetic on a pointer to an incomplete type}}
8 c
++; // expected-warning {{arithmetic on a pointer to void is a GNU extension}}
9 c
+= 1; // expected-warning {{arithmetic on a pointer to void is a GNU extension}}
10 c
--; // expected-warning {{arithmetic on a pointer to void is a GNU extension}}
11 c
-= 1; // expected-warning {{arithmetic on a pointer to void is a GNU extension}}
12 (void) c
[1]; // expected-warning {{subscript of a pointer to void is a GNU extension}}
13 b
= 1+b
; // expected-error {{arithmetic on a pointer to an incomplete type}}
14 /* The next couple tests are only pedantic warnings in gcc */
15 void (*d
)(S
*,void*) = a
;
16 d
+= 1; // expected-warning {{arithmetic on a pointer to the function type 'void (S *, void *)' is a GNU extension}}
17 d
++; // expected-warning {{arithmetic on a pointer to the function type 'void (S *, void *)' is a GNU extension}}
18 d
--; // expected-warning {{arithmetic on a pointer to the function type 'void (S *, void *)' is a GNU extension}}
19 d
-= 1; // expected-warning {{arithmetic on a pointer to the function type 'void (S *, void *)' is a GNU extension}}
20 (void)(1 + d
); // expected-warning {{arithmetic on a pointer to the function type 'void (S *, void *)' is a GNU extension}}