diff --git a/include/clang/Basic/DiagnosticSemaKinds.td b/include/clang/Basic/DiagnosticSemaKinds.td
index 0a90af1..d0a6cd3 100644
--- a/include/clang/Basic/DiagnosticSemaKinds.td
+++ b/include/clang/Basic/DiagnosticSemaKinds.td
@@ -1348,6 +1348,8 @@
   "%0 and %1 are not pointers to compatible types">;
 def ext_typecheck_ordered_comparison_of_pointer_integer : ExtWarn<
   "ordered comparison between pointer and integer (%0 and %1)">;
+def ext_typecheck_ordered_comparison_of_pointer_and_zero : Extension<
+  "ordered comparison between pointer and zero (%0 and %1) is an extension">;
 def ext_typecheck_ordered_comparison_of_function_pointers : ExtWarn<
   "ordered comparison of function pointers (%0 and %1)">;
 def ext_typecheck_comparison_of_pointer_integer : ExtWarn<
diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp
index f9ec6af..5920291 100644
--- a/lib/Sema/SemaExpr.cpp
+++ b/lib/Sema/SemaExpr.cpp
@@ -4358,10 +4358,16 @@
     }
   }
   if (lType->isAnyPointerType() && rType->isIntegerType()) {
-    if (!RHSIsNull) {
-      unsigned DiagID = isRelational
-           ? diag::ext_typecheck_ordered_comparison_of_pointer_integer
-           : diag::ext_typecheck_comparison_of_pointer_integer;
+    unsigned DiagID = 0;
+    if (RHSIsNull) {
+      if (isRelational)
+        DiagID = diag::ext_typecheck_ordered_comparison_of_pointer_and_zero;
+    } else if (isRelational)
+      DiagID = diag::ext_typecheck_ordered_comparison_of_pointer_integer;
+    else
+      DiagID = diag::ext_typecheck_comparison_of_pointer_integer;
+    
+    if (DiagID) {
       Diag(Loc, DiagID)
         << lType << rType << lex->getSourceRange() << rex->getSourceRange();
     }
@@ -4369,11 +4375,16 @@
     return ResultTy;
   }
   if (lType->isIntegerType() && rType->isAnyPointerType()) {
-    if (!LHSIsNull) {
-      unsigned DiagID = isRelational
-        ? diag::ext_typecheck_ordered_comparison_of_pointer_integer
-        : diag::ext_typecheck_comparison_of_pointer_integer;
+    unsigned DiagID = 0;
+    if (LHSIsNull) {
+      if (isRelational)
+        DiagID = diag::ext_typecheck_ordered_comparison_of_pointer_and_zero;
+    } else if (isRelational)
+      DiagID = diag::ext_typecheck_ordered_comparison_of_pointer_integer;
+    else
+      DiagID = diag::ext_typecheck_comparison_of_pointer_integer;
       
+    if (DiagID) {
       Diag(Loc, DiagID)
         << lType << rType << lex->getSourceRange() << rex->getSourceRange();
     }
diff --git a/test/CXX/temp/temp.decls/temp.class.spec/temp.class.spec.mfunc/p1.cpp b/test/CXX/temp/temp.decls/temp.class.spec/temp.class.spec.mfunc/p1.cpp
index bd9a06d..b63c56c 100644
--- a/test/CXX/temp/temp.decls/temp.class.spec/temp.class.spec.mfunc/p1.cpp
+++ b/test/CXX/temp/temp.decls/temp.class.spec/temp.class.spec.mfunc/p1.cpp
@@ -23,4 +23,4 @@
 
 template<class X> A<X*, 2>::~A() { }
 
-template<class X> A<X*, 2>::operator X*() { return 0; }
\ No newline at end of file
+template<class X> A<X*, 2>::operator X*() { return 0; }
diff --git a/test/Sema/compare.c b/test/Sema/compare.c
index 2afaab5..6b64bac 100644
--- a/test/Sema/compare.c
+++ b/test/Sema/compare.c
@@ -5,7 +5,8 @@
 int test(char *C) { // nothing here should warn.
   return C != ((void*)0);
   return C != (void*)0;
-  return C != 0;
+  return C != 0;  
+  return C != 1;  // expected-warning {{comparison between pointer and integer ('char *' and 'int')}}
 }
 
 int equal(char *a, const char *b) {
@@ -18,7 +19,8 @@
 }
 
 int pointers(int *a) {
-  return a > 0; // no warning.  rdar://7163039
+  return a > 0; // expected-warning {{ordered comparison between pointer and zero ('int *' and 'int') is an extension}}
+  return a > 42; // expected-warning {{ordered comparison between pointer and integer ('int *' and 'int')}}
   return a > (void *)0; // expected-warning {{comparison of distinct pointer types}}
 }
 
