https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118169

--- Comment #19 from Jason Merrill <jason at gcc dot gnu.org> ---
(In reply to Jakub Jelinek from comment #17)
> Now we just try to evaluate it with the B type.

As intended, yes.

> just the final MODIFY_EXPR (D.2922 = 0; in there) wasn't for
> whatever reason converted to void and so has BOOLEAN_TYPE and we then just
> try to set D.2912 to false.

That's the problem; we want to avoid trying to apply the D.2922 assignment to
D.2912 as well, whether by converting the MODIFY_EXPR to void or otherwise.

> But that is wrong, we shouldn't be converting that to the object type, as it
> is just sequence of void statements.

Yes, a sequence of statements that initialize subobjects of the object; after
evaluating all of them, the object should be initialized.

Reply via email to