summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorLouis Dionne <ldionne@apple.com>2018-09-14 14:07:16 +0000
committerLouis Dionne <ldionne@apple.com>2018-09-14 14:07:16 +0000
commit3c011e1e3c45dc53d135ad2ffc0b2d7998bc8e2c (patch)
treeec00ef96b1560fbe75e0455031c80deabf0da788 /clang/test
parentb437238e95ee87075cfaad9b92082264ff00e2e2 (diff)
downloadbcm5719-llvm-3c011e1e3c45dc53d135ad2ffc0b2d7998bc8e2c.tar.gz
bcm5719-llvm-3c011e1e3c45dc53d135ad2ffc0b2d7998bc8e2c.zip
[clang] Make sure attributes on member classes are applied properly
Summary: Attributes on member classes of class templates and member class templates of class templates are not currently instantiated. This was discovered by Richard Smith here: http://lists.llvm.org/pipermail/cfe-dev/2018-September/059291.html This commit makes sure that attributes are instantiated properly. This commit does not fix the broken behavior for member partial and explicit specializations of class templates. PR38913 Reviewers: rsmith Subscribers: dexonsmith, cfe-commits Differential Revision: https://reviews.llvm.org/D51997 llvm-svn: 342238
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/SemaCXX/PR38913.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/clang/test/SemaCXX/PR38913.cpp b/clang/test/SemaCXX/PR38913.cpp
new file mode 100644
index 00000000000..698de8c8441
--- /dev/null
+++ b/clang/test/SemaCXX/PR38913.cpp
@@ -0,0 +1,12 @@
+// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s | FileCheck %s
+
+// PR38913
+// Check that we instantiate attributes on declarations for...
+
+// ...a member class of a class template specialization
+template<class T> struct A { struct __attribute__((abi_tag("ATAG"))) X { }; };
+A<int>::X* a() { return 0; } // CHECK-DAG: @_Z1aB4ATAGv
+
+// ...a member class template
+template<class T> struct B { template<class U> struct __attribute__((abi_tag("BTAG"))) X { }; };
+B<int>::X<int>* b() { return 0; } // CHECK-DAG: @_Z1bB4BTAGv
OpenPOWER on IntegriCloud