aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2014-11-14 12:02:09 +0000
committerJonathan Wakely <redi@gcc.gnu.org>2014-11-14 12:02:09 +0000
commitcbe4c88c5ef99e9ff26f9aef92b3cd68707d4d9c (patch)
tree017766ed4bebcfb5b1632f1dc6e0ffea4be42f68 /gcc
parentc7274165bd25121e2d7562718904f12126bf1b1e (diff)
downloadgcc-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/ChangeLog4
-rw-r--r--gcc/cp/mangle.c2
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/g++.dg/abi/abi-tag11.C12
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) {}