[PATCH] D51789: [WIP][clang] Add the no_extern_template attribute

Louis Dionne via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Sep 7 08:03:28 PDT 2018


ldionne created this revision.
ldionne added reviewers: rsmith, rjmccall.
Herald added subscribers: llvm-commits, dexonsmith.

This attribute allows excluding a member of a class template from being part
of an explicit template instantiation of that class template. This also makes
sure that code using such a member will not take for granted that an external
instantiation exists in another translation unit. The attribute was discussed
on cfe-dev at [1] and is primarily motivated by the removal of always_inline
in libc++ to control what's part of the ABI (see links in [1]).

[1]: http://lists.llvm.org/pipermail/cfe-dev/2018-August/059024.html

rdar://problem/43428125


Repository:
  rL LLVM

https://reviews.llvm.org/D51789

Files:
  clang/include/clang/Basic/Attr.td
  clang/include/clang/Basic/AttrDocs.td
  clang/include/clang/Basic/DiagnosticSemaKinds.td
  clang/lib/Sema/SemaDeclAttr.cpp
  clang/lib/Sema/SemaTemplateInstantiate.cpp
  clang/test/CodeGenCXX/attribute_no_extern_template.explicit_instantiation.cpp
  clang/test/CodeGenCXX/attribute_no_extern_template.extern_declaration.cpp
  clang/test/CodeGenCXX/attribute_no_extern_template.merge_redeclarations.cpp
  clang/test/SemaCXX/attr-no_extern_template.diagnose_when_undefined.cpp
  clang/test/SemaCXX/attr-no_extern_template.valid_entities.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D51789.164424.patch
Type: text/x-patch
Size: 16911 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180907/b9f6d932/attachment.bin>


More information about the llvm-commits mailing list