aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorDouglas Gregor <doug.gregor@gmail.com>2007-08-31 19:18:20 +0000
committerDoug Gregor <dgregor@gcc.gnu.org>2007-08-31 19:18:20 +0000
commit268127ceca311ea64ed5b67d544eea8b670f4507 (patch)
tree2f99d34ff51b2a0d4c2f5bf980a91ec2f1f8397d /gcc/testsuite
parent1ab28be5966d14e3981692007b1c8aecfc7577d1 (diff)
downloadgcc-268127ceca311ea64ed5b67d544eea8b670f4507.zip
gcc-268127ceca311ea64ed5b67d544eea8b670f4507.tar.gz
gcc-268127ceca311ea64ed5b67d544eea8b670f4507.tar.bz2
re PR c++/32597 (New operation with empty parameter pack does not value-initialize)
2007-08-31 Douglas Gregor <doug.gregor@gmail.com> PR c++/32597 * init.c (build_default_init): Make extern. * cp-tree.h (build_default_init): Declare here. * pt.c (tsubst_expr): When the instantiation of the initializer of a variable results in an empty list, default-initialize the variable. (tsubst_copy_and_build): When the instantiation of the initializer in a new expression results in an empty initializer list, default-initialize it. 2007-08-31 Douglas Gregor <doug.gregor@gmail.com> PR c++/32597 * gcc/testsuite/g++.dg/cpp0x/variadic-new2.C: New. * gcc/testsuite/g++.dg/cpp0x/variadic-new.C: New. From-SVN: r128000
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/variadic-new.C19
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/variadic-new2.C24
3 files changed, 49 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index ea3bd82..95c522f 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2007-08-31 Douglas Gregor <doug.gregor@gmail.com>
+
+ PR c++/32597
+ * gcc/testsuite/g++.dg/cpp0x/variadic-new2.C: New.
+ * gcc/testsuite/g++.dg/cpp0x/variadic-new.C: New.
+
2007-08-31 Tobias Burnus <burnus@net-b.de>
PR fortran/33232
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-new.C b/gcc/testsuite/g++.dg/cpp0x/variadic-new.C
new file mode 100644
index 0000000..8690527
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-new.C
@@ -0,0 +1,19 @@
+// { dg-do "run" }
+// { dg-options "-std=c++0x" }
+// Contributed by Peter Dimov
+// PR c++/32597
+#include <assert.h>
+#include <new>
+
+int k = 5;
+
+template< class... Args > void f( Args... args )
+{
+ new( &k ) int( args... );
+}
+
+int main()
+{
+ f();
+ assert( k == 0 );
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-new2.C b/gcc/testsuite/g++.dg/cpp0x/variadic-new2.C
new file mode 100644
index 0000000..a40f96e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-new2.C
@@ -0,0 +1,24 @@
+// { dg-do "run" }
+// { dg-options "-std=c++0x" }
+// PR c++/32597
+#include <assert.h>
+#include <new>
+
+template< class... Args > void f( Args... args )
+{
+ {
+ int x = 17;
+ (void)x;
+ }
+
+ {
+ int y(args...);
+ assert(y == 0);
+ }
+
+}
+
+int main()
+{
+ f();
+}