Work around dllimport bug with exclude_from_explicit_instantiation.

When dllimport is specified on a class, and
exclude_from_explicit_instatiation is specified on a member, clang-cl
will still expect a definition to be available externally. But this is
not correct.

Surprisingly one one symbol seems to be consistently affected by this
bug. So this patch simply works around it there.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@355760 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Eric Fiselier
2019-03-08 23:59:29 +00:00
parent 116fd64479
commit c8839c8db0

View File

@@ -254,7 +254,10 @@ public:
return do_compare(__lo1, __hi1, __lo2, __hi2); return do_compare(__lo1, __hi1, __lo2, __hi2);
} }
// FIXME(EricWF): The _LIBCPP_ALWAYS_INLINE is needed on Windows to work
// around a dllimport bug that expects an external instantiation.
_LIBCPP_INLINE_VISIBILITY _LIBCPP_INLINE_VISIBILITY
_LIBCPP_ALWAYS_INLINE
string_type transform(const char_type* __lo, const char_type* __hi) const string_type transform(const char_type* __lo, const char_type* __hi) const
{ {
return do_transform(__lo, __hi); return do_transform(__lo, __hi);