diff options
author | Douglas Gregor <doug.gregor@gmail.com> | 2007-08-31 19:18:20 +0000 |
---|---|---|
committer | Doug Gregor <dgregor@gcc.gnu.org> | 2007-08-31 19:18:20 +0000 |
commit | 268127ceca311ea64ed5b67d544eea8b670f4507 (patch) | |
tree | 2f99d34ff51b2a0d4c2f5bf980a91ec2f1f8397d /gcc/testsuite | |
parent | 1ab28be5966d14e3981692007b1c8aecfc7577d1 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/variadic-new.C | 19 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/variadic-new2.C | 24 |
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(); +} |