[PR86218] handle ck_aggr in compare_ics in both and either conversion
Jason Merrill
jason@redhat.com
Tue Feb 5 18:59:00 GMT 2019
On 1/30/19 10:56 AM, Alexandre Oliva wrote:
> Because of rank compares, and checks for ck_list, we know that if we
> see user_conv_p or ck_list in ics1, we'll also see it in ics2. This
> reasoning does not extend to ck_aggr, however, so we might have
> ck_aggr conversions starting both ics1 and ics2, which we handle
> correctly, or either, which we likely handle by crashing on whatever
> path we take depending on whether ck_aggr is in ics1 or ics2.
>
> We crash because, as we search the conversion sequences, we may very
> well fail to find what we are looking for, and reach the end of the
> sequence, which is unexpected in all paths.
>
> This patch arranges for us to take the same path when ck_aggr is in
> ics2 only that we would if it was in ics1 (regardless of ics2), and it
> deals with not finding the kind of conversion we look for there.
>
> I've changed the type of the literal constant in the testcase, so as
> to hopefully make it well-formed. We'd fail to reject the narrowing
> conversion in the original testcase, but that's a separate bug.
>
> Regstrapped on x86_64- and i686-linux-gnu. Ok to install?
>
>
> for gcc/cp/ChangeLog
>
> PR c++/86218
> * call.c (compare_ics): Deal with ck_aggr in either cs.
OK.
Jason
More information about the Gcc-patches
mailing list