diff options
| author | Rafael Auler <rafaelauler@fb.com> | 2019-01-31 13:31:33 +0000 |
|---|---|---|
| committer | Rafael Auler <rafaelauler@fb.com> | 2019-01-31 13:31:33 +0000 |
| commit | ea94c308ac1d0fc513c76c3be3feed32b44fc012 (patch) | |
| tree | 817126cd8a9601f7d36cfaa729888410988f3835 | |
| parent | d778d4fdedbadb7a72a357e79dcbafdeec900044 (diff) | |
| download | bcm5719-llvm-ea94c308ac1d0fc513c76c3be3feed32b44fc012.tar.gz bcm5719-llvm-ea94c308ac1d0fc513c76c3be3feed32b44fc012.zip | |
Revert "Support attribute used in member funcs of class templates"
This reverts commit 352740: broke swift build
llvm-svn: 352748
| -rw-r--r-- | clang/lib/Sema/SemaTemplateInstantiateDecl.cpp | 14 | ||||
| -rw-r--r-- | clang/test/CodeGenCXX/attr-used-member-function-implicit-instantiation.cpp | 19 |
2 files changed, 0 insertions, 33 deletions
diff --git a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp index 07533828dfd..883a73f2266 100644 --- a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp +++ b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp @@ -2175,20 +2175,6 @@ TemplateDeclInstantiator::VisitCXXMethodDecl(CXXMethodDecl *D, Owner->addDecl(Method); } - // PR17480: Honor the used attribute to instantiate member function - // definitions - if (Method->hasAttr<UsedAttr>()) { - if (const auto *A = dyn_cast<CXXRecordDecl>(Owner)) { - SourceLocation Loc; - if (const MemberSpecializationInfo *MSInfo = - A->getMemberSpecializationInfo()) - Loc = MSInfo->getPointOfInstantiation(); - else if (const auto *Spec = dyn_cast<ClassTemplateSpecializationDecl>(A)) - Loc = Spec->getPointOfInstantiation(); - SemaRef.MarkFunctionReferenced(Loc, Method); - } - } - return Method; } diff --git a/clang/test/CodeGenCXX/attr-used-member-function-implicit-instantiation.cpp b/clang/test/CodeGenCXX/attr-used-member-function-implicit-instantiation.cpp deleted file mode 100644 index 7d2062f989d..00000000000 --- a/clang/test/CodeGenCXX/attr-used-member-function-implicit-instantiation.cpp +++ /dev/null @@ -1,19 +0,0 @@ -// 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 |

