[cfe-commits] r132397 - in /cfe/trunk: lib/Sema/SemaExpr.cpp test/SemaObjCXX/nullptr.mm

Douglas Gregor dgregor at apple.com
Wed Jun 1 08:12:24 PDT 2011


Author: dgregor
Date: Wed Jun  1 10:12:24 2011
New Revision: 132397

URL: http://llvm.org/viewvc/llvm-project?rev=132397&view=rev
Log:
Implement comparisons between nullptr and Objective-C object
pointers. Fixes PR10052.

Added:
    cfe/trunk/test/SemaObjCXX/nullptr.mm
Modified:
    cfe/trunk/lib/Sema/SemaExpr.cpp

Modified: cfe/trunk/lib/Sema/SemaExpr.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExpr.cpp?rev=132397&r1=132396&r2=132397&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaExpr.cpp (original)
+++ cfe/trunk/lib/Sema/SemaExpr.cpp Wed Jun  1 10:12:24 2011
@@ -7536,7 +7536,7 @@
     // Comparison of pointers with null pointer constants and equality
     // comparisons of member pointers to null pointer constants.
     if (RHSIsNull &&
-        ((lType->isPointerType() || lType->isNullPtrType()) ||
+        ((lType->isAnyPointerType() || lType->isNullPtrType()) ||
          (!isRelational && lType->isMemberPointerType()))) {
       rex = ImpCastExprToType(rex.take(), lType, 
                         lType->isMemberPointerType()
@@ -7545,7 +7545,7 @@
       return ResultTy;
     }
     if (LHSIsNull &&
-        ((rType->isPointerType() || rType->isNullPtrType()) ||
+        ((rType->isAnyPointerType() || rType->isNullPtrType()) ||
          (!isRelational && rType->isMemberPointerType()))) {
       lex = ImpCastExprToType(lex.take(), rType, 
                         rType->isMemberPointerType()

Added: cfe/trunk/test/SemaObjCXX/nullptr.mm
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjCXX/nullptr.mm?rev=132397&view=auto
==============================================================================
--- cfe/trunk/test/SemaObjCXX/nullptr.mm (added)
+++ cfe/trunk/test/SemaObjCXX/nullptr.mm Wed Jun  1 10:12:24 2011
@@ -0,0 +1,13 @@
+// RUN: %clang_cc1 -std=c++0x -fsyntax-only -verify %s
+
+ at interface A
+ at end
+
+void comparisons(A *a) {
+  (void)(a == nullptr);
+  (void)(nullptr == a);
+}
+
+void assignment(A *a) {
+  a = nullptr;
+}





More information about the cfe-commits mailing list