diff options
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/abi/abi-tag1.C | 19 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/abi/abi-tag2.C | 5 |
3 files changed, 29 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 73ad2528523..608e017943c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-11-09 Jason Merrill <jason@redhat.com> + + * g++.dg/abi/abi-tag1.C: New. + * g++.dg/abi/abi-tag2.C: New. + 2012-11-09 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/55154 diff --git a/gcc/testsuite/g++.dg/abi/abi-tag1.C b/gcc/testsuite/g++.dg/abi/abi-tag1.C new file mode 100644 index 00000000000..942929cdd35 --- /dev/null +++ b/gcc/testsuite/g++.dg/abi/abi-tag1.C @@ -0,0 +1,19 @@ +// { dg-options "-Wabi-tag" } + +// { dg-final { scan-assembler "_Z1fB3barB3fooi" } } +void f(int) __attribute ((abi_tag ("foo","bar"))); + +struct __attribute ((abi_tag ("bar"))) A { }; + +struct B: A { }; // { dg-warning "bar. abi tag" } +struct D { A* ap; }; // { dg-warning "bar. abi tag" } + +// { dg-final { scan-assembler "_Z1gB3baz1AB3bar" } } +void g(A) __attribute ((abi_tag ("baz"))); +void g(A) __attribute ((abi_tag ("baz"))); + +int main() +{ + f(42); + g(A()); +} diff --git a/gcc/testsuite/g++.dg/abi/abi-tag2.C b/gcc/testsuite/g++.dg/abi/abi-tag2.C new file mode 100644 index 00000000000..0e92dcc1dcc --- /dev/null +++ b/gcc/testsuite/g++.dg/abi/abi-tag2.C @@ -0,0 +1,5 @@ +void f(int); +void f(int) __attribute ((abi_tag ("foo"))); // { dg-error "adds abi tag" } + +struct C; +struct __attribute ((abi_tag ("foo"))) C; // { dg-error "adds abi tag" } |