1 // tests that the asm directive is correctly handled for static fields
2 // in structures and classes. This only applies to C++; such
3 // directives generate errors in C. Assembler directives for local
4 // variables should be tested by the C test suite.
5 //
6 // Contributed by Robert Bowdidge (bowdidge@apple.com) 14 Oct 2003
7
8 // { dg-do compile }
9
10 struct Foo {
11 // This should reference a variable called bar
12 static int i __asm__("bar");
13 };
14
15
16 class Bar {
17 public:
18 static int i __asm__("theRealI");
19 static int j __asm__("theRealJ");
20 int boof;
21 };
22
23 class Baz : public Bar {
24 public:
25 static char *ptr __asm__ ("theRealString");
26 };
27
main(int argc,char ** argv)28 int main (int argc, char **argv) {
29 struct Foo myFoo;
30 Bar b;
31 myFoo.i = 1;
32 Foo::i = 2;
33 Baz::j = 10;
34 Baz::ptr = 0;
35 b.i = 1;
36 return (b.i);
37 }
38
39
40 /* { dg-final {scan-assembler "bar"} } */
41 /* { dg-final {scan-assembler "theRealString"} } */
42 /* { dg-final {scan-assembler "theRealI" } } */
43 /* { dg-final {scan-assembler "theRealJ" } } */
44