[PATCH] PR15291: noreturn adjustment in overload resolution for function templates

Alexander Zinenko ftynse at gmail.com
Thu Mar 7 12:39:05 PST 2013


Ping?


On 26 February 2013 23:26, Alexander Zinenko <ftynse at gmail.com> wrote:

> Hello, John!
>
> Thanks for your comments!
> I introduced a flag that allows noreturn mismatches only if template
> deduction is called during overload resolution.  It allowed also to use
> function calls only in these cases while just comparing pointers in all the
> other cases.
>
> Just comparing types will not work unless noreturn and non-noreturn
> functions have the same type, but this is not the thing we want according
> to the recent discussion on PR15105.  While it is possible to build a
> similar function type without noreturn and compare against it, this would
> not work for implicit default calling conventions that require the same
> logic in overload as noreturn functions.
>
> Is this patch better?
>
> --
> Alex
>
>
> On 26 February 2013 02:48, John McCall <rjmccall at apple.com> wrote:
>
>> On Feb 25, 2013, at 8:34 AM, Alexander Zinenko <ftynse at gmail.com> wrote:
>> > This patch allows function templates with GNU noreturn attribute to
>> participate in overload resolution as non-noreturn ones.  Same behavior is
>> allowed for functions now.
>> > The patch only allows deducing such types since the necessary
>> adjustments are already performed in corresponding functions (like in
>> IsStandardConversion).
>>
>> This function does a lot of work to make sure that the final equality
>> comparison is a (fast) pointer equality test, and you're replacing it with
>> a (slow) function call.
>>
>> Also, we definitely don't want to allow noreturn mismatches in every
>> context.
>>
>> John.
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20130307/18ae6d86/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: PR15291.patch
Type: application/octet-stream
Size: 14227 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20130307/18ae6d86/attachment.obj>


More information about the cfe-commits mailing list