diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2014-11-14 12:02:09 +0000 |
---|---|---|
committer | Jonathan Wakely <jwakely@redhat.com> | 2014-11-14 12:02:09 +0000 |
commit | 4158b7dac5324a41b0b078af8f26362274bd00ad (patch) | |
tree | 017766ed4bebcfb5b1632f1dc6e0ffea4be42f68 | |
parent | becd5e1ac92ad5e24222d474970c017b81e99c1d (diff) |
gcc/cp:
* mangle.c (find_substitution): Look for abi_tag on class templates.
gcc/testsuite:
* g++.dg/abi/abi-tag11.C: New.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@217557 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/cp/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/cp/mangle.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/abi/abi-tag11.C | 12 |
4 files changed, 21 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 26aa986a2f3..ddef4ff68b2 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,7 @@ +2014-11-14 Jonathan Wakely <jwakely@redhat.com> + + * mangle.c (find_substitution): Look for abi_tag on class templates. + 2014-11-13 Bernd Schmidt <bernds@codesourcery.com> Thomas Schwinge <thomas@codesourcery.com> Ilya Verbin <ilya.verbin@intel.com> diff --git a/gcc/cp/mangle.c b/gcc/cp/mangle.c index 048c957519b..576ad1d1978 100644 --- a/gcc/cp/mangle.c +++ b/gcc/cp/mangle.c @@ -609,7 +609,7 @@ find_substitution (tree node) } tree tags = NULL_TREE; - if (OVERLOAD_TYPE_P (node)) + if (OVERLOAD_TYPE_P (node) || DECL_CLASS_TEMPLATE_P (node)) tags = lookup_attribute ("abi_tag", TYPE_ATTRIBUTES (type)); /* Now check the list of available substitutions for this mangling operation. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b6a07d3fb12..c7d7a904dc0 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2014-11-14 Jonathan Wakely <jwakely@redhat.com> + + * g++.dg/abi/abi-tag11.C: New. + 2014-11-14 Marek Polacek <polacek@redhat.com> * c-c++-common/ubsan/overflow-negate-3.c: New test. diff --git a/gcc/testsuite/g++.dg/abi/abi-tag11.C b/gcc/testsuite/g++.dg/abi/abi-tag11.C new file mode 100644 index 00000000000..36c1c9f0c09 --- /dev/null +++ b/gcc/testsuite/g++.dg/abi/abi-tag11.C @@ -0,0 +1,12 @@ +// { dg-final { scan-assembler "_Z1fSbB3fooIwSt11char_traitsIwESaIwEES3_" } } + +namespace std { + template <class T> struct char_traits {}; + template <class T> struct allocator {}; + template <class T, class U, class V> + struct __attribute ((abi_tag ("foo"))) basic_string { }; + typedef basic_string<wchar_t,char_traits<wchar_t>,allocator<wchar_t> > + wstring; +} + +void f(std::wstring,std::wstring) {} |