OSDN Git Service

2010-07-03 Iain Sandoe <iains@gcc.gnu.org>
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / obj-c++.dg / encode-3.mm
1 /* { dg-do run } */
2
3 extern "C" {
4 extern void _exit(int);
5 extern int strcmp(const char *, const char *);
6 }
7
8 template <class T>
9 struct Vec {
10   T x, y;
11   long z;
12   long long zz;
13 };
14
15 typedef struct {
16   float fscalar;
17   double dv[10];
18   int iscalar;
19   long z;
20   long long zz;
21   Vec<const signed char> cv;
22 } anonymous;
23
24 //Vec<double> dd;
25 const char *enc = @encode(Vec<float>);
26 const char *enc2 = @encode(Vec<double>);
27 const char *enc3 = @encode(anonymous);
28
29 #ifdef __LP64__
30 #define L "q"
31 #else
32 #define L "l"
33 #endif
34
35 int main(void) {
36   const char *encode = @encode(long);
37
38   if (strcmp (encode, L))
39     _exit(-(__LINE__));
40
41   if (strcmp (enc, "{Vec<float>=ff" L "q}"))
42     _exit(-(__LINE__));
43
44   if (strcmp (enc2, "{Vec<double>=dd" L "q}"))
45     _exit(-(__LINE__));
46
47   if (strcmp (enc3, "{?=f[10d]i" L "q{Vec<const signed char>=rcrc" L "q}}"))
48     _exit(-(__LINE__));
49
50   return 0;
51 }