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.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51228 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/Sema/pointer-addition.c b/test/Sema/pointer-addition.c
new file mode 100644
index 0000000..f2fb973
--- /dev/null
+++ b/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}}
+}