<div dir="ltr"><div dir="ltr"><a href="http://llvm.org/PR41018">llvm.org/PR41018</a></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Mar 8, 2019 at 7:00 PM Shoaib Meenai <<a href="mailto:smeenai@fb.com">smeenai@fb.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Have you filed a clang bug?<br>
<br>
On 3/8/19, 3:58 PM, "libcxx-commits on behalf of Eric Fiselier via libcxx-commits" <<a href="mailto:libcxx-commits-bounces@lists.llvm.org" target="_blank">libcxx-commits-bounces@lists.llvm.org</a> on behalf of <a href="mailto:libcxx-commits@lists.llvm.org" target="_blank">libcxx-commits@lists.llvm.org</a>> wrote:<br>
<br>
    Author: ericwf<br>
    Date: Fri Mar  8 15:59:29 2019<br>
    New Revision: 355760<br>
<br>
    URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D355760-26view-3Drev&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=2Na5lcbfttUEFT5yqeby2oe7VkGdaqttbhZ2DH88d6U&s=YbkTkZgDgW9u3gaZMtaLTrlKrtkxvQhiwJG6USGff9E&e=" rel="noreferrer" target="_blank">https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D355760-26view-3Drev&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=2Na5lcbfttUEFT5yqeby2oe7VkGdaqttbhZ2DH88d6U&s=YbkTkZgDgW9u3gaZMtaLTrlKrtkxvQhiwJG6USGff9E&e=</a><br>
    Log:<br>
    Work around dllimport bug with exclude_from_explicit_instantiation.<br>
<br>
    When dllimport is specified on a class, and<br>
    exclude_from_explicit_instatiation is specified on a member, clang-cl<br>
    will still expect a definition to be available externally. But this is<br>
    not correct.<br>
<br>
    Surprisingly one one symbol seems to be consistently affected by this<br>
    bug. So this patch simply works around it there.<br>
<br>
    Modified:<br>
        libcxx/trunk/include/__locale<br>
<br>
    Modified: libcxx/trunk/include/__locale<br>
    URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_libcxx_trunk_include_-5F-5Flocale-3Frev-3D355760-26r1-3D355759-26r2-3D355760-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=2Na5lcbfttUEFT5yqeby2oe7VkGdaqttbhZ2DH88d6U&s=AxBEZsvbDRj4wFiydEiujJlo1Iboo0ka31eLYrAVDVI&e=" rel="noreferrer" target="_blank">https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_libcxx_trunk_include_-5F-5Flocale-3Frev-3D355760-26r1-3D355759-26r2-3D355760-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=2Na5lcbfttUEFT5yqeby2oe7VkGdaqttbhZ2DH88d6U&s=AxBEZsvbDRj4wFiydEiujJlo1Iboo0ka31eLYrAVDVI&e=</a><br>
    ==============================================================================<br>
    --- libcxx/trunk/include/__locale (original)<br>
    +++ libcxx/trunk/include/__locale Fri Mar  8 15:59:29 2019<br>
    @@ -254,7 +254,10 @@ public:<br>
             return do_compare(__lo1, __hi1, __lo2, __hi2);<br>
         }<br>
<br>
    +    // FIXME(EricWF): The _LIBCPP_ALWAYS_INLINE is needed on Windows to work<br>
    +    // around a dllimport bug that expects an external instantiation.<br>
         _LIBCPP_INLINE_VISIBILITY<br>
    +    _LIBCPP_ALWAYS_INLINE<br>
         string_type transform(const char_type* __lo, const char_type* __hi) const<br>
         {<br>
             return do_transform(__lo, __hi);<br>
<br>
<br>
    _______________________________________________<br>
    libcxx-commits mailing list<br>
    <a href="mailto:libcxx-commits@lists.llvm.org" target="_blank">libcxx-commits@lists.llvm.org</a><br>
    <a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_libcxx-2Dcommits&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=2Na5lcbfttUEFT5yqeby2oe7VkGdaqttbhZ2DH88d6U&s=-Rpq6jhVffz2Oy22CwLlLwDTFHxDO_jpmK9UIlSeFFs&e=" rel="noreferrer" target="_blank">https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_libcxx-2Dcommits&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=2Na5lcbfttUEFT5yqeby2oe7VkGdaqttbhZ2DH88d6U&s=-Rpq6jhVffz2Oy22CwLlLwDTFHxDO_jpmK9UIlSeFFs&e=</a><br>
<br>
<br>
</blockquote></div>