diff options
author | Nathan Sidwell <nathan@codesourcery.com> | 2000-06-22 09:29:00 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2000-06-22 09:29:00 +0000 |
commit | dc2a68d78596e00195006f6a83e4fc9fc0da2076 (patch) | |
tree | 06def3ea0be766fd6b0d95a05405780a28fa8544 | |
parent | ea333e1ceadfd7c0ecb64e47bb844cd2b5e6acc9 (diff) | |
download | gcc-dc2a68d78596e00195006f6a83e4fc9fc0da2076.zip gcc-dc2a68d78596e00195006f6a83e4fc9fc0da2076.tar.gz gcc-dc2a68d78596e00195006f6a83e4fc9fc0da2076.tar.bz2 |
vaarg2.C: New test.
* g++.old-deja/g++.pt/vaarg2.C: New test.
* g++.old-deja/g++.pt/vaarg3.C: New test.
From-SVN: r34646
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.pt/vaarg2.C | 26 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.pt/vaarg3.C | 26 |
3 files changed, 57 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5c6534f..012e8ac 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2000-06-22 Nathan Sidwell <nathan@codesourcery.com> + + * g++.old-deja/g++.pt/vaarg2.C: New test. + * g++.old-deja/g++.pt/vaarg3.C: New test. + 2000-06-20 Nathan Sidwell <nathan@codesourcery.com> * g++.old-deja/g++.other/dyncast6.C: New test. diff --git a/gcc/testsuite/g++.old-deja/g++.pt/vaarg2.C b/gcc/testsuite/g++.old-deja/g++.pt/vaarg2.C new file mode 100644 index 0000000..19d8574 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/vaarg2.C @@ -0,0 +1,26 @@ +// Build don't link: +// Copyright (C) 2000 Free Software Foundation +// Contributed by Nathan Sidwell 22 June 2000 <nathan@codesourcery.com> + +// Origin GNATS bug report 63 from Kurt Garloff <garloff@tue.nl> +// We attempted to expand va_arg prematurely in a template function. + +#include <stdarg.h> + +template <class Type> +void PrintArgs (Type somearg, ...) +{ +va_list argp; +va_start (argp, somearg); +Type value; +while ( ( value = va_arg (argp, Type) ) > 0.0) + continue; +va_end (argp); +} + +int main (void) +{ +double dummy = 0; +PrintArgs (dummy, 1.0, 2.0, 3.0, -1.0); +return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/vaarg3.C b/gcc/testsuite/g++.old-deja/g++.pt/vaarg3.C new file mode 100644 index 0000000..46c9824 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/vaarg3.C @@ -0,0 +1,26 @@ +// Build don't link: +// Copyright (C) 2000 Free Software Foundation +// Contributed by Nathan Sidwell 22 June 2000 <nathan@codesourcery.com> + +#include <stdarg.h> + +struct A { + virtual ~A () {}; +}; + +template <class Type> +void PrintArgs (Type somearg, ...) +{ +va_list argp; +va_start (argp, somearg); // ERROR - cannot pass non-POD +Type value; +value = va_arg (argp, Type); // ERROR - cannot pass non-POD +va_end (argp); +} + +int main (void) +{ +A dummy; +PrintArgs (dummy, dummy); // ERROR - cannot pass non-POD +return 0; +} |