[libcxx] r206805 - Use compiler intrinsic __is_constructible if available

Logan Chien tzuhsiang.chien at gmail.com
Thu Jul 17 10:47:32 PDT 2014


Hi,

FYI, from the backtrace, it seems that this is related to:
http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20140707/109506.html

It seems that the types after the packed parameters are not canonicalized
in some cases.
I am working on this (my patch is incorrect at the moment), but haven't got
a correct solution yet.

Sincerely,
Logan


On Thu, Jul 17, 2014 at 10:34 PM, Alp Toker <alp at nuanti.com> wrote:

>
> On 17/07/2014 16:29, İsmail Dönmez wrote:
>
>> Hi,
>>
>> Just tried trunk and its still broken wrt. __is_constructible
>>
>
> The reduced test case doesn't include uses of __is_constructable or any
> other type trait primitive.
>
> I can confirm though that it does crash somewhere in parameter pack
> handling, which is used to pass types to the built-in:
>
>
> Assertion failed: (Replacement.isCanonical() && "replacement types must
> always be canonical"), function getSubstTemplateTypeParmType, file
> /Users/alp/Projects/llvm-work/upstream/clang/lib/AST/ASTContext.cpp, line
> 3040.
> 6  libclangAST.dylib          0x000000010ee7d210 clang::ASTContext::
> getSubstTemplateTypeParmPackType(clang::TemplateTypeParmType const*,
> clang::TemplateArgument const&) + 0
> 7  libclangSema.dylib         0x000000010e9b1dab clang::TreeTransform<(anonymous
> namespace)::TemplateInstantiator>::TransformType(clang::TypeLocBuilder&,
> clang::TypeLoc) + 6595
> 8  libclangSema.dylib         0x000000010e9b0144 clang::TreeTransform<(anonymous
> namespace)::TemplateInstantiator>::TransformType(clang::TypeSourceInfo*)
> + 200
> 9  libclangSema.dylib         0x000000010e9bc053 clang::TreeTransform<(anonymous
> namespace)::TemplateInstantiator>::TransformTemplateArgument(clang::TemplateArgumentLoc
> const&, clang::TemplateArgumentLoc&) + 119
>
>
>
>
>> ismail
>>
>>
>>
>>
>> On Tue, Apr 29, 2014 at 3:51 PM, İsmail Dönmez <ismail at donmez.ws <mailto:
>> ismail at donmez.ws>> wrote:
>>
>>     Hi,
>>
>>     Attached is a testcase with unrelated errors in it. I am still
>>     trying to reduce a non-error version but if this one works cool.
>>
>>     Get latest libcxx and compile with clang++ -std=c++11 -c testcase.ii
>>
>>
>>
>>     On Fri, Apr 25, 2014 at 9:49 PM, Richard Smith <metafoo at gmail.com
>>     <mailto:metafoo at gmail.com>> wrote:
>>
>>         Any chance you could produce a reduced testcase and file a bug
>>         against Clang? =)
>>
>>
>>         On Fri Apr 25 2014 at 11:37:56 AM, İsmail Dönmez
>>         <ismail at donmez.ws <mailto:ismail at donmez.ws>> wrote:
>>
>>             Hi,
>>
>>
>>             On Fri, Apr 25, 2014 at 6:09 PM, Marshall Clow
>>             <mclow.lists at gmail.com <mailto:mclow.lists at gmail.com>> wrote:
>>
>>
>>                 On Apr 24, 2014, at 2:44 AM, İsmail Dönmez
>>                 <ismail at donmez.ws <mailto:ismail at donmez.ws>> wrote:
>>
>>                  Hi,
>>>
>>>
>>>                 On Tue, Apr 22, 2014 at 1:30 AM, Marshall Clow
>>>                 <mclow.lists at gmail.com
>>>                 <mailto:mclow.lists at gmail.com>> wrote:
>>>
>>>                     Author: marshall
>>>                     Date: Mon Apr 21 17:30:32 2014
>>>                     New Revision: 206805
>>>
>>>                     URL:
>>>                     http://llvm.org/viewvc/llvm-
>>> project?rev=206805&view=rev
>>>                     Log:
>>>                     Use compiler intrinsic __is_constructible if
>>>                     available
>>>
>>>                     Modified:
>>>                     libcxx/trunk/include/type_traits
>>>
>>>
>>>                 This breaks the llvm compilation (in stage2 hence
>>>                 clang is the compiler here) for me on Linux/x86-64:
>>>
>>
>>                 Sorry; was in meetings all day yesterday.
>>                 Looks like a bug in the __is_constructible code in clang.
>>
>>                 As a workaround (and a check to make sure that’s what
>>                 it is), would you please change (in type_traits)
>>
>>                 #if __has_feature(is_constructible)
>>                 to
>>                 #if 0
>>
>>                 and let me know if that fixes the crash?
>>
>>
>>             This indeed fixes the crash.
>>
>>             Regards.
>>
>>
>>             _______________________________________________
>>             cfe-commits mailing list
>>             cfe-commits at cs.uiuc.edu <mailto:cfe-commits at cs.uiuc.edu>
>>             http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>
>
> --
> http://www.nuanti.com
> the browser experts
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140718/63c743d0/attachment.html>


More information about the cfe-commits mailing list