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
This commit is contained in:
Nathan Sidwell 2000-06-22 09:29:00 +00:00 committed by Nathan Sidwell
parent ea333e1cea
commit dc2a68d785
3 changed files with 57 additions and 0 deletions

View File

@ -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.

View File

@ -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;
}

View File

@ -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;
}