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

Alexander Zinenko ftynse at gmail.com
Tue Feb 26 13:26:44 PST 2013


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/20130226/212860f5/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: PR15291.patch
Type: application/octet-stream
Size: 14224 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20130226/212860f5/attachment.obj>


More information about the cfe-commits mailing list