131
|
1 // PR c++/87137
|
|
2
|
|
3 // Empty macro args are undefined in C++ 98
|
|
4 // { dg-do compile { target c++11 } }
|
|
5
|
|
6 // We got confused by non-field decls separating bitfields when
|
|
7 // ms_bitfield_layout was in effect.
|
|
8
|
|
9 #if defined (__x86_64__) || defined (__i686__) || defined (__powerpc__)
|
|
10 #define ATTRIB __attribute__((ms_struct))
|
|
11 #elif defined (__superh__)
|
|
12 #define ATTRIB __attribute__((renesas))
|
|
13 #else
|
|
14 #define ATTRIB
|
|
15 #endif
|
|
16
|
|
17 #define DEFINE(NAME,BASE,THING) \
|
|
18 struct ATTRIB NAME BASE { \
|
|
19 unsigned one : 12; \
|
|
20 THING \
|
|
21 unsigned two : 4; \
|
|
22 }
|
|
23
|
|
24 template<unsigned I, unsigned J> struct Test;
|
|
25 template<unsigned I> struct Test<I,I> {};
|
|
26
|
|
27 #define TEST(NAME,BASE,THING) \
|
|
28 DEFINE(NAME##_WITH,BASE,THING); \
|
|
29 DEFINE(NAME##_WITHOUT,BASE,); \
|
|
30 int NAME = sizeof (Test<sizeof(NAME##_WITH),sizeof (NAME##_WITHOUT)>)
|
|
31
|
|
32 TEST(NSFun,,int fun (););
|
|
33 TEST(SFun,,static int fun (););
|
|
34 TEST(Tdef,,typedef int tdef;);
|
|
35
|
|
36 TEST(Var,,static int var;);
|
|
37 struct base { int f; };
|
|
38 TEST(Use,:base,using base::f;);
|
|
39 TEST(Tmpl,,template<unsigned> class X {};);
|
|
40 TEST(TmplFN,,template<unsigned> void fu (););
|