diff options
author | Eli Friedman <eli.friedman@gmail.com> | 2008-05-18 18:08:51 +0000 |
---|---|---|
committer | Eli Friedman <eli.friedman@gmail.com> | 2008-05-18 18:08:51 +0000 |
commit | 8e12298192a5221e2819b0fb78b4962a035f2188 (patch) | |
tree | 009a2ba7a8ab05d0036fb735a24ec2373e889194 /clang/test/Sema/pointer-addition.c | |
parent | e2846b6929a10a7eb81430aa0b3886cf0c7e022b (diff) | |
download | bcm5719-llvm-8e12298192a5221e2819b0fb78b4962a035f2188.tar.gz bcm5719-llvm-8e12298192a5221e2819b0fb78b4962a035f2188.zip |
Add proper type-checking for pointer additiion; before, we were accepting
addition with a pointer and an integer even when it didn't make sense.
llvm-svn: 51228
Diffstat (limited to 'clang/test/Sema/pointer-addition.c')
-rw-r--r-- | clang/test/Sema/pointer-addition.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/clang/test/Sema/pointer-addition.c b/clang/test/Sema/pointer-addition.c new file mode 100644 index 00000000000..f2fb973d1be --- /dev/null +++ b/clang/test/Sema/pointer-addition.c @@ -0,0 +1,14 @@ +// RUN: clang %s -fsyntax-only -verify -pedantic + +typedef struct S S; +void a(S* b, void* c) { + 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}} + 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 {{pointer to incomplete type}} + d++; // expected-error {{pointer to incomplete type}} +} |