re PR c++/58255 ([C++11] explicit delegating constructor with no arguments wrongly...
authorPaolo Carlini <paolo.carlini@oracle.com>
Wed, 28 Aug 2013 22:40:34 +0000 (22:40 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Wed, 28 Aug 2013 22:40:34 +0000 (22:40 +0000)
/cp
2013-08-28  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/58255
* init.c (build_aggr_init): When init == void_type_node do not
set LOOKUP_ONLYCONVERTING.

/testsuite
2013-08-28  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/58255
* g++.dg/cpp0x/dc7.C: New.

From-SVN: r202061

gcc/cp/ChangeLog
gcc/cp/init.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/dc7.C [new file with mode: 0644]

index da60378b1adb63269f2ce1f84d81737a12f48941..bf491983ee4f3d7812701278241da87670ad3730 100644 (file)
@@ -1,3 +1,9 @@
+2013-08-28  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/58255
+       * init.c (build_aggr_init): When init == void_type_node do not
+       set LOOKUP_ONLYCONVERTING.
+
 2013-08-27  Caroline Tice  <cmtice@google.com>
 
        * vtable-class-hierarchy.c: Remove unnecessary include statements.
index 3ec32c580acccca63dd67b0522071350951e791f..156b4a1e082762d14b856af29694ea30f07c2b26 100644 (file)
@@ -1464,7 +1464,8 @@ build_aggr_init (tree exp, tree init, int flags, tsubst_flags_t complain)
   TREE_READONLY (exp) = 0;
   TREE_THIS_VOLATILE (exp) = 0;
 
-  if (init && TREE_CODE (init) != TREE_LIST
+  if (init && init != void_type_node
+      && TREE_CODE (init) != TREE_LIST
       && !(TREE_CODE (init) == TARGET_EXPR
           && TARGET_EXPR_DIRECT_INIT_P (init))
       && !(BRACE_ENCLOSED_INITIALIZER_P (init)
index 4e2daaf6098eacf629b4d20dfd8425077b47dfc0..afd5eafde32c1663d3ee2f9d9d3b91c5da40742c 100644 (file)
@@ -1,3 +1,8 @@
+2013-08-28  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/58255
+       * g++.dg/cpp0x/dc7.C: New.
+
 2013-08-28  Jakub Jelinek  <jakub@redhat.com>
 
        PR middle-end/58257
diff --git a/gcc/testsuite/g++.dg/cpp0x/dc7.C b/gcc/testsuite/g++.dg/cpp0x/dc7.C
new file mode 100644 (file)
index 0000000..e48741e
--- /dev/null
@@ -0,0 +1,7 @@
+// PR c++/58255
+// { dg-do compile { target c++11 } }
+
+struct A {
+  explicit A() { }
+  A(int x) : A() { }
+};