diff options
| author | Douglas Gregor <dgregor@apple.com> | 2009-01-23 00:36:41 +0000 | 
|---|---|---|
| committer | Douglas Gregor <dgregor@apple.com> | 2009-01-23 00:36:41 +0000 | 
| commit | f6cd928bf4576811f1aa6ecae84be5b2e048d14c (patch) | |
| tree | e913128860f943240147ffc16b27f42c14037b8e /clang/test/Sema | |
| parent | 706d40e66235dafb85557ade0bb6c2209111d878 (diff) | |
| download | bcm5719-llvm-f6cd928bf4576811f1aa6ecae84be5b2e048d14c.tar.gz bcm5719-llvm-f6cd928bf4576811f1aa6ecae84be5b2e048d14c.zip | |
Support arithmetic on pointer-to-function types as a GNU
extension. Addresses clang PR/3371.
llvm-svn: 62823
Diffstat (limited to 'clang/test/Sema')
| -rw-r--r-- | clang/test/Sema/pointer-addition.c | 9 | 
1 files changed, 7 insertions, 2 deletions
| diff --git a/clang/test/Sema/pointer-addition.c b/clang/test/Sema/pointer-addition.c index 95f364fc676..81a1dc06c1f 100644 --- a/clang/test/Sema/pointer-addition.c +++ b/clang/test/Sema/pointer-addition.c @@ -2,13 +2,18 @@  typedef struct S S; // expected-note{{forward declaration of 'struct S'}}  void a(S* b, void* c) { +  void (*fp)(int) = 0;    b++;       // expected-error {{arithmetic on pointer to incomplete type}}    b += 1;    // expected-error {{arithmetic on pointer to incomplete type}}    c++;       // expected-warning {{use of GNU void* extension}}    c += 1;    // expected-warning {{use of GNU void* extension}} +  c--;       // expected-warning {{use of GNU void* extension}} +  c -= 1;    // expected-warning {{use of GNU void* extension}}    b = 1+b;   // expected-error {{arithmetic on pointer to incomplete type}}    /* The next couple tests are only pedantic warnings in gcc */    void (*d)(S*,void*) = a; -  d += 1;    // expected-error {{arithmetic on pointer to function type}}} -  d++;       // expected-error {{arithmetic on pointer to function type}}} +  d += 1;    // expected-warning {{arithmetic on pointer to function type 'void (*)(S *, void *)' is a GNU extension}} +  d++;       // expected-warning {{arithmetic on pointer to function type 'void (*)(S *, void *)' is a GNU extension}}} +  d--;       // expected-warning {{arithmetic on pointer to function type 'void (*)(S *, void *)' is a GNU extension}} +  d -= 1;    // expected-warning {{arithmetic on pointer to function type 'void (*)(S *, void *)' is a GNU extension}}  } | 

