The reduced test case compiles down to xor %eax,%eax ret which comes from an invalid transformation in .030t.esra conv_u.v = vdest; res_115 = conv_u.i; -> D.2888_153 = VIEW_CONVERT_EXPR<uint32_t>(vdest); vdest.v1 = vdest$v1_154; vdest.v2 = vdest$v2_152; vdest.v3 = vdest$v3_151; vdest.v4 = vdest$v4_150; conv_u$i_171 = D.2888_153; Note in particular that the components of vdest are stored after we've done the view_convert.
Created attachment 19683 [details] test case
Subject: Bug 42833 Author: rth Date: Fri Jan 22 18:52:01 2010 New Revision: 156176 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=156176 Log: PR tree-opt/42833 * tree-sra.c (sra_modify_assign): Delay re-gimplification of the RHS until after generate_subtree_copies has insertted its code before the current statement. Added: trunk/gcc/testsuite/gcc.c-torture/execute/pr42833.c Modified: trunk/gcc/ChangeLog trunk/gcc/tree-sra.c
Fixed.