On Thu, Mar 06, 2025 at 09:50:33AM +0100, Richard Biener wrote:
> The following testcase runs into a re-gimplification issue during
> inlining when processing
> 
>   MEM[(struct e *)this_2(D)].a = {};
> 
> where re-gimplification does not handle assignments in the same
> way than the gimplifier but instead relies on rhs_predicate_for
> and gimplifying the RHS standalone.  This fails to handle
> special-casing of CTORs.  The is_gimple_mem_rhs_or_call predicate
> already handles clobbers but not empty CTORs so we end up in
> the fallback code trying to force the CTOR into a separate stmt
> using a temporary - but as we have a non-copyable type here that ICEs.
> 
> The following generalizes empty CTORs in is_gimple_mem_rhs_or_call
> since those need no additional re-gimplification.
> 
> Bootstrapped on x86_64-unknown-linux-gnu, testing in progress.
> 
> Richard.
> 
>       PR middle-end/119119
>       * gimplify.cc (is_gimple_mem_rhs_or_call): All empty CTORs
>       are OK when not a register type.
> 
>       * g++.dg/torture/pr11911.C: New testcase.

LGTM.

        Jakub

Reply via email to