https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118248
--- Comment #25 from Iain Buclaw <ibuclaw at gcc dot gnu.org> --- (In reply to Iain Buclaw from comment #23) > (In reply to Iain Buclaw from comment #22) > > pthis.msgBuf = buf; > In D, this is an array copy assignment. > > I've tried lowering this to `foreach (i; 0 .. 100) msgBuf[i] = buf[i]`, but > that doesn't trigger the ICE. Just realised that struct assignment would be the equivalent in C/C++. Here is an equivalent that ICE's when compiled with `gcc-riscv64-linux-gnu -O1` on s390x host. --- struct char100 { char data[100]; }; struct s118248 { void **vtbl; struct char100 data; }; void sink(struct char100 *buf); struct s118248 *pr118248(struct s118248 *pthis) { struct char100 buf; sink(&buf); pthis->data = buf; return pthis; } ---