diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2014-11-14 12:02:09 +0000 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2014-11-14 12:02:09 +0000 |
commit | cbe4c88c5ef99e9ff26f9aef92b3cd68707d4d9c (patch) | |
tree | 017766ed4bebcfb5b1632f1dc6e0ffea4be42f68 /gcc | |
parent | c7274165bd25121e2d7562718904f12126bf1b1e (diff) | |
download | gcc-cbe4c88c5ef99e9ff26f9aef92b3cd68707d4d9c.zip gcc-cbe4c88c5ef99e9ff26f9aef92b3cd68707d4d9c.tar.gz gcc-cbe4c88c5ef99e9ff26f9aef92b3cd68707d4d9c.tar.bz2 |
mangle.c (find_substitution): Look for abi_tag on class templates.
gcc/cp:
* mangle.c (find_substitution): Look for abi_tag on class templates.
gcc/testsuite:
* g++.dg/abi/abi-tag11.C: New.
From-SVN: r217557
Diffstat (limited to 'gcc')
-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 26aa986..ddef4ff 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 048c957..576ad1d 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 b6a07d3..c7d7a90 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 0000000..36c1c9f --- /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) {} |