1 // PR opt/6793
2 // We failed to supress inlining of a varargs function when it's a template.
3 // { dg-do compile }
4 // { dg-options "-O3" }
5 
6 #include <stdarg.h>
7 
8 typedef __SIZE_TYPE__ size_t;
9 
10 template < class Type > class VectorNd
11 {
12   size_t size;
13   Type *data;
14  public:
15 
VectorNd(size_t _size,size_t count,...)16   VectorNd (size_t _size, size_t count, ...)
17 	: size (_size)
18   {
19     data = new Type[size];
20 
21     va_list ap;
22 
23     va_start (ap, count);
24 
25     for (size_t i = 0; i < count; i++)
26       data[i] = va_arg (ap, Type);
27 
28     va_end (ap);
29   }
30 
~VectorNd()31   ~VectorNd ()
32   {
33     delete [] data;
34   }
35 };
36 
main()37 int main ()
38 {
39   VectorNd <double> vector (3, 3, 1.0, 2.0, 3.0);
40 }
41