OSDN Git Service

/cp
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 9 Nov 2011 17:21:19 +0000 (17:21 +0000)
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 9 Nov 2011 17:21:19 +0000 (17:21 +0000)
2011-11-09  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/51045
* init.c (build_new_1, build_vec_delete_1, build_delete):
Use nullptr_node.

/testsuite
2011-11-09  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/51045
* g++.dg/warn/Wzero-as-null-pointer-constant-2.C: New.

2011-11-09  Paolo Carlini  <paolo.carlini@oracle.com>

* doc/invoke.texi ([Option Summary, C++ Language Options]):
Add -Wzero-as-null-pointer-constant.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181214 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/cp/ChangeLog
gcc/cp/init.c
gcc/doc/invoke.texi
gcc/testsuite/g++.dg/warn/Wzero-as-null-pointer-constant-2.C [new file with mode: 0644]

index c35939a..f011be7 100644 (file)
@@ -1,3 +1,8 @@
+2011-11-09  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       * doc/invoke.texi ([Option Summary, C++ Language Options]):
+       Add -Wzero-as-null-pointer-constant.
+
 2011-11-07  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>
 
        * config/arm/arm-cores.def: Add -mcpu=cortex-a7.
index f7f91d2..7ebe23f 100644 (file)
@@ -1,3 +1,28 @@
+2011-11-09  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/51045
+       * init.c (build_new_1, build_vec_delete_1, build_delete):
+       Use nullptr_node.
+
+2011-11-09  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/51047
+       * search.c (lookup_member): Change to take also a tsubst_flags_t
+       parameter.
+       (lookup_field, lookup_fnfields): Adjust calls.
+       * typeck.c (lookup_destructor, finish_class_member_access_expr,
+       build_ptrmemfunc_access_expr): Likewise.
+       * class.c (handle_using_decl, maybe_note_name_used_in_class):
+       Likewise.
+       * pt.c (resolve_typename_type): Likewise.
+       * semantics.c (lambda_function): Likewise.
+       * parser.c (cp_parser_perform_range_for_lookup,
+       cp_parser_lookup_name): Likewise.
+       * friend.c (make_friend_class): Likewise.
+       * name-lookup.c (pushdecl_maybe_friend_1, get_class_binding,
+       do_class_using_decl, lookup_qualified_name): Likewise.
+       * cp-tree.h (lookup_member): Adjust declaration.
+
 2011-11-09  Dodji Seketeli  <dodji@redhat.com>
 
        PR c++/51027
index ca4f590..77fe42e 100644 (file)
@@ -2646,7 +2646,7 @@ build_new_1 (VEC(tree,gc) **placement, tree type, tree nelts,
        {
          tree ifexp = cp_build_binary_op (input_location,
                                           NE_EXPR, alloc_node,
-                                          integer_zero_node,
+                                          nullptr_node,
                                           complain);
          rval = build_conditional_expr (ifexp, rval, alloc_node, 
                                          complain);
@@ -2958,7 +2958,7 @@ build_vec_delete_1 (tree base, tree maxindex, tree type,
                      fold_build2_loc (input_location,
                                   NE_EXPR, boolean_type_node, base,
                                   convert (TREE_TYPE (base),
-                                           integer_zero_node)),
+                                           nullptr_node)),
                      body, integer_zero_node);
   body = build1 (NOP_EXPR, void_type_node, body);
 
@@ -3685,7 +3685,7 @@ build_delete (tree type, tree addr, special_function_kind auto_delete,
        {
          /* Handle deleting a null pointer.  */
          ifexp = fold (cp_build_binary_op (input_location,
-                                           NE_EXPR, addr, integer_zero_node,
+                                           NE_EXPR, addr, nullptr_node,
                                            complain));
          if (ifexp == error_mark_node)
            return error_mark_node;
index e6fffb1..54e4a48 100644 (file)
@@ -200,7 +200,7 @@ in the following sections.
 -Weffc++  -Wstrict-null-sentinel @gol
 -Wno-non-template-friend  -Wold-style-cast @gol
 -Woverloaded-virtual  -Wno-pmf-conversions @gol
--Wsign-promo}
+-Wsign-promo -Wzero-as-null-pointer-constant}
 
 @item Objective-C and Objective-C++ Language Options
 @xref{Objective-C and Objective-C++ Dialect Options,,Options Controlling
diff --git a/gcc/testsuite/g++.dg/warn/Wzero-as-null-pointer-constant-2.C b/gcc/testsuite/g++.dg/warn/Wzero-as-null-pointer-constant-2.C
new file mode 100644 (file)
index 0000000..317d852
--- /dev/null
@@ -0,0 +1,49 @@
+// PR c++/51045
+// { dg-options "-Wzero-as-null-pointer-constant" }
+
+template <typename T>
+struct A
+{
+  A() { t = new T; }
+
+  ~A()
+  {
+    delete t;
+  }
+  T* t;
+};
+
+template <typename T>
+struct B
+{
+  B() { t = new T[1]; }
+
+  ~B()
+  {
+    delete [] t;
+  }
+  T* t;
+};
+
+template <typename Type>
+class Variant
+{
+  Type t;
+};
+
+class Op;
+
+typedef Variant<A<Op> > vara;
+typedef Variant<B<Op> > varb;
+
+class Op
+{
+  vara x;
+  varb y;
+};
+
+int main()
+{
+  vara a;
+  varb b;
+}