summaryrefslogtreecommitdiffstats
path: root/test/CodeGenCXX/attr-used-member-function-implicit-instantiation.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/CodeGenCXX/attr-used-member-function-implicit-instantiation.cpp')
-rw-r--r--test/CodeGenCXX/attr-used-member-function-implicit-instantiation.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/test/CodeGenCXX/attr-used-member-function-implicit-instantiation.cpp b/test/CodeGenCXX/attr-used-member-function-implicit-instantiation.cpp
new file mode 100644
index 0000000000..7d2062f989
--- /dev/null
+++ b/test/CodeGenCXX/attr-used-member-function-implicit-instantiation.cpp
@@ -0,0 +1,19 @@
+// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s | FileCheck %s
+
+// Check that PR17480 is fixed: __attribute__((used)) ignored in templated
+// classes
+namespace InstantiateUsedMemberDefinition {
+template <typename T>
+struct S {
+ int __attribute__((used)) f() {
+ return 0;
+ }
+};
+
+void test() {
+ // Check that InstantiateUsedMemberDefinition::S<int>::f() is defined
+ // as a result of the S class template implicit instantiation
+ // CHECK: define linkonce_odr i32 @_ZN31InstantiateUsedMemberDefinition1SIiE1fEv
+ S<int> inst;
+}
+} // namespace InstantiateUsedMemberDefinition