[libcxx-commits] [libcxx] r355760 - Work around dllimport bug with exclude_from_explicit_instantiation.

Shoaib Meenai via libcxx-commits libcxx-commits at lists.llvm.org
Fri Mar 8 16:00:06 PST 2019


Have you filed a clang bug?

´╗┐On 3/8/19, 3:58 PM, "libcxx-commits on behalf of Eric Fiselier via libcxx-commits" <libcxx-commits-bounces at lists.llvm.org on behalf of libcxx-commits at lists.llvm.org> wrote:

    Author: ericwf
    Date: Fri Mar  8 15:59:29 2019
    New Revision: 355760
    
    URL: 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=
    Log:
    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.
    
    Modified:
        libcxx/trunk/include/__locale
    
    Modified: libcxx/trunk/include/__locale
    URL: 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=
    ==============================================================================
    --- libcxx/trunk/include/__locale (original)
    +++ libcxx/trunk/include/__locale Fri Mar  8 15:59:29 2019
    @@ -254,7 +254,10 @@ public:
             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_ALWAYS_INLINE
         string_type transform(const char_type* __lo, const char_type* __hi) const
         {
             return do_transform(__lo, __hi);
    
    
    _______________________________________________
    libcxx-commits mailing list
    libcxx-commits at lists.llvm.org
    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=
    



More information about the libcxx-commits mailing list