implement rdar://7432000 - signed negate should codegen as NSW.
While I'm in there, adjust pointer to member adjustments as well.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106955 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/CodeGen/exprs.c b/test/CodeGen/exprs.c
index d82cbf4..a90ae58 100644
--- a/test/CodeGen/exprs.c
+++ b/test/CodeGen/exprs.c
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 %s -emit-llvm -o -
+// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
 
 // PR1895
 // sizeof function
@@ -119,3 +119,16 @@
 void f10() {
   __builtin_sin(0);
 }
+
+// Tests for signed integer overflow stuff.
+// rdar://7432000
+void f11() {
+  // CHECK: define void @f11
+  extern volatile int f11G, a, b;
+  // CHECK: add nsw i32
+  f11G = a + b;
+  // CHECK: sub nsw i32
+  f11G = a - b;
+  // CHECK: sub nsw i32 0, 
+  f11G = -a;
+}