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