[patch] Lazily provide a __float128 type in -std=gnu++11 mode

Nico Weber thakis at chromium.org
Thu Jun 20 14:46:10 PDT 2013


On Thu, Jun 20, 2013 at 2:29 PM, Eli Friedman <eli.friedman at gmail.com>wrote:

> On Thu, Jun 20, 2013 at 2:25 PM, Nico Weber <thakis at chromium.org> wrote:
>
>> Thanks for the quick review!
>>
>> On Thu, Jun 20, 2013 at 2:02 PM, Eli Friedman <eli.friedman at gmail.com>wrote:
>>
>>>  On Thu, Jun 20, 2013 at 1:45 PM, Nico Weber <thakis at chromium.org>wrote:
>>>
>>>> Hi,
>>>>
>>>> the attached patch lazily inserts a __float128 type the first time one
>>>> is looked up. This is needed to compile libstdc++4.7+ headers in
>>>> -std=gnu++11 mode. This fixes PR13530, see that bug for more information.
>>>>
>>>> Ok?
>>>>
>>>
>>> Is there any particular reason you're checking for GNUMode?
>>>
>>
>> Yes, type_traits only adds __is_floating_pointer_helper<__float128> if
>> __STRICT_ANSI__ isn't defined. InitPreprocessor.cpp defines this exactly if
>> !GNUMode. I changed the test to check for __STRICT_ANSI__ to maybe make
>> this a bit clearer.
>>
>>
>>> "variable has incomplete type '__float128'" is a terrible error message
>>> if someone actually tries to use __float128 with clang.  Can we do better?
>>>
>>
>> We can, attached.
>>
>>
>>
> Not sure if this catches all cases, but it's probably good enough.
>
> Otherwise, looks fine.
>

r184476, thanks!

I looked through a few diags in DiagnosticSemaKind mentioning "incomplete
type", and the ones I checked all go through RequireCompleteType (I checked
err_incomplete_type err_typecheck_decl_incomplete_type
err_invalid_incomplete_type_use err_bad_dynamic_cast_incomplete
err_incomplete_typeid err_new_incomplete_type warn_delete_incomplete
err_catch_incomplete_ptr err_catch_incomplete_ref err_throw_incomplete
err_throw_incomplete_ptr err_incomplete_object_call)


>
> -Eli
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20130620/c52d8afe/attachment.html>


More information about the cfe-commits mailing list