[C++ Patch] PR 84632 ("[8 Regression] internal compiler error: tree check: expected record_type or union_type or qual_union_type, have array_type in reduced_constant_expression_p...")
Paolo Carlini
paolo.carlini@oracle.com
Thu Mar 22 21:39:00 GMT 2018
Hi,
On 22/03/2018 22:19, Jason Merrill wrote:
> On Thu, Mar 22, 2018 at 3:35 PM, Paolo Carlini <paolo.carlini@oracle.com> wrote:
>> Hi again,
>>
>> On 22/03/2018 19:58, Paolo Carlini wrote:
>>
>> Nice. While I start implementing the above, any hint about thing like
>> g++.dg/cpp0x/initlist68.C, which we would reject because involves a plain
>> constructor of type ARRAY_TYPE, not a proper BRACE_ENCLOSED_INITIALIZER_P?
>> Also, less important I guess, we would also reject g++.dg/torture/pr70499.C
>> to which you added -fpermissive in the occasion of c++/78345. Or maybe you
>> meant something a bit less drastic ;)
>>
>> I suspect that allowing for either BRACE_ENCLOSED_INITIALIZER_P or
>> CONSTRUCTOR with a check of the type (like you changed build_vec_init at the
>> time:
>> https://gcc.gnu.org/viewcvs/gcc/trunk/gcc/cp/init.c?r1=246244&r2=246243&pathrev=246244
>> ) would work fine.
> Yes, that sounds good. And if pr70499.C fails, let's fix the testcase
> to add the missing braces.
Ok about pr70499.C.
Unfortunately, however, the above idea still is not enough: for, say,
lambda-array.C we have to accept as init an INDIRECT_REF with
ARRAY_TYPE, thus qualified CONSTRUCTOR isn't enough, it really looks
like we have to accept various (?) TREE_CODEs with ARRAY_TYPE as type,
not just CONSTRUCTORs, to handle normal well formed code. Thus my best
try so far would be the below, in testing. What do you think?
Cheers,
Paolo.
/////////////////////
More information about the Gcc-patches
mailing list