]> gcc.gnu.org Git - gcc.git/commitdiff
Core 903 (partial)
authorJason Merrill <jason@redhat.com>
Tue, 23 Aug 2011 16:03:25 +0000 (12:03 -0400)
committerJason Merrill <jason@gcc.gnu.org>
Tue, 23 Aug 2011 16:03:25 +0000 (12:03 -0400)
Core 903 (partial)
* call.c (null_ptr_cst_p): Only 0 qualifies in C++11.

From-SVN: r177996

gcc/cp/ChangeLog
gcc/cp/call.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr.C

index 0f325a8936740ce43ad316262d99750db478b1bc..bbada45813c6d648c08dbc072ddbac9b99c09417 100644 (file)
@@ -1,3 +1,8 @@
+2011-08-23  Jason Merrill  <jason@redhat.com>
+
+       Core 903 (partial)
+       * call.c (null_ptr_cst_p): Only 0 qualifies in C++11.
+
 2011-08-23  Jason Merrill  <jason@redhat.com>
 
        Core 975
index d2700cbeac808bb3b06b3d552f07533118e27715..e5f65b31c6cf0ed7efd9ae96d38cdee509744ca5 100644 (file)
@@ -541,20 +541,14 @@ null_ptr_cst_p (tree t)
     return true;
   if (CP_INTEGRAL_TYPE_P (TREE_TYPE (t)))
     {
-      if (cxx_dialect >= cxx0x)
-       {
-         t = fold_non_dependent_expr (t);
-         t = maybe_constant_value (t);
-         if (TREE_CONSTANT (t) && integer_zerop (t))
-           return true;
-       }
-      else
+      /* Core issue 903 says only literal 0 is a null pointer constant.  */
+      if (cxx_dialect < cxx0x)
        {
          t = integral_constant_value (t);
          STRIP_NOPS (t);
-         if (integer_zerop (t) && !TREE_OVERFLOW (t))
-           return true;
        }
+      if (integer_zerop (t) && !TREE_OVERFLOW (t))
+       return true;
     }
   return false;
 }
index 9dfa4d3eb2939be4f8694afe29b31d3f52297566..a85caca0ff587e7f22f31729d0ae45647d1f33cb 100644 (file)
@@ -1,3 +1,8 @@
+2011-08-23  Jason Merrill  <jason@redhat.com>
+
+       Core 903
+       * g++.dg/cpp0x/constexpr-nullptr.C: Now ill-formed.
+
 2011-08-23  Jason Merrill  <jason@redhat.com>
 
        Core 975
index 7ac53db489ca15a78fef84b1b6448e75ca078af5..6381323cc0ca6ad4b9a66a4f9786b8b9d69133d4 100644 (file)
@@ -2,5 +2,5 @@
 
 constexpr int zero() { return 0; }
 
-void* ptr1 = zero(); // #1
-constexpr void* ptr2 = zero(); // #2
+void* ptr1 = zero();           // { dg-error "int" }
+constexpr void* ptr2 = zero(); // { dg-error "int" }
This page took 0.123866 seconds and 5 git commands to generate.