diff options
Diffstat (limited to 'gcc/testsuite/g++.dg/ext/offsetof1.C')
-rw-r--r-- | gcc/testsuite/g++.dg/ext/offsetof1.C | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/ext/offsetof1.C b/gcc/testsuite/g++.dg/ext/offsetof1.C new file mode 100644 index 000000000..1468c0a7c --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/offsetof1.C @@ -0,0 +1,21 @@ +// PR c++/27601 +// Origin: Patrik Hägglund <patrik.hagglund@bredband.net> +// { dg-do compile } + +struct bar { + static int foo; + static int baz(); +}; + +int a = __builtin_offsetof(bar, foo); // { dg-error "static data member" } +int av = __builtin_offsetof(volatile bar, foo); // { dg-error "static data member" } +int b = __builtin_offsetof(bar, baz); // { dg-error "member function" } +int b0 = __builtin_offsetof(bar, baz[0]); // { dg-error "function" } +int bv0 = __builtin_offsetof(volatile bar, baz[0]); // { dg-error "function" } +int c = __builtin_offsetof(bar, ~bar); // { dg-error "member function" } + +typedef int I; +enum E { }; + +int d = __builtin_offsetof(I, ~I); // { dg-error "destructor" } +int e = __builtin_offsetof(E, ~E); // { dg-error "destructor" } |