https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115131
--- Comment #4 from Sam James <sjames at gcc dot gnu.org> --- Reduced: ``` struct recv_frame_hdr { int *adapter }; union recv_frame { struct recv_frame_hdr u }; char *_rtw_init_recv_priv_precvpriv_0; int _rtw_init_recv_priv_padapter, _rtw_init_recv_priv_i; void _rtw_init_recv_priv() { union recv_frame *precvframe; _rtw_init_recv_priv_precvpriv_0 = (char *)(0 / 0 << 8); precvframe = (union recv_frame *)_rtw_init_recv_priv_precvpriv_0; _rtw_init_recv_priv_i = 0; for (; _rtw_init_recv_priv_i < 6; _rtw_init_recv_priv_i++) { precvframe->u.adapter = &_rtw_init_recv_priv_padapter; precvframe++; } } ``` But it has UB with the division by zero.