On Tue, Jan 16, 2018 at 4:40 PM, Paolo Carlini <paolo.carl...@oracle.com> wrote:
> On 16/01/2018 22:35, Jason Merrill wrote:
>> On Tue, Jan 16, 2018 at 3:32 PM, Paolo Carlini <paolo.carl...@oracle.com>
>> wrote:
>>>
>>> thus I figured out what was badly wrong in my first try: I misread
>>> ensure_literal_type_for_constexpr_object and missed that it can return
>>> NULL_TREE without emitting an hard error. Thus my first try even caused
>>> miscompilations :( Anyway, when DECL_DECLARED_CONSTEXPR_P is true we are
>>> safe and indeed we want to clear it as matter of error recovery. Then, in
>>> this safe case the only change in the below is returning early, thus
>>> avoiding any internal inconsistencies later and also the redundant /
>>> misleading diagnostic which I already mentioned.
>>
>> I can't see how this could be right.  In the cases where we don't give
>> an error (e.g. because we're dealing with an instantiation of a
>> variable template) there is no error, so we need to proceed with the
>> rest of cp_finish_decl as normal.
>
> The cases where we don't give an error all fall under
> DECL_DECLARED_CONSTEXPR_P == false, thus aren't affected at all.

Ah, true.  Though that's a bit subtle; maybe change ensure_... to
return error_mark_node in the error case?

Jason

Reply via email to