------- Comment #12 from jakub at gcc dot gnu dot org 2007-10-11 09:41 ------- The problem is that D.1556 (the var that hasn't been renamed or with the patch can't be looked up) has been deleted. *.phiprop has: long unsigned intD.4 D.1556; ... D.1554_11 = (long unsigned intD.4) dimD.1539_4(D); D.1556_12 = D.1554_11 * 4; ... D.1561_23 = D.1556_12 /[ex] 4; D.1562_24 = &(*newcentroid.1D.1559_22)[0]{lb: 0 sz: D.1561_23 * 4};
then FRE does: Replaced D.1556_12 /[ex] 4 with D.1554_11 in D.1561_23 = D.1556_12 /[ex] 4; long unsigned intD.4 D.1556; ... D.1554_11 = (long unsigned intD.4) dimD.1539_4(D); D.1556_12 = D.1554_11 * 4; ... newcentroid.1D.1559_22 = (intD.0[3][0:D.1553] *) D.1560_21; D.1561_23 = D.1554_11; D.1562_24 = &(*newcentroid.1D.1559_22)[0]{lb: 0 sz: D.1561_23 * 4}; and as D.1556 is unused, it is DCEd in dce2 pass. But D.1556 (and D.1555) is still present in TYPE_SIZE{,_UNIT} of the VLA type, so when vectorizer regimplifies it, it adds back code to compute its size, but that assumes D.1556 has the correct value. Not sure what could be done here to fix this. The easiest solution is not to vectorize when VLA types are involved. In any case it means that debuginfo will be incomplete if its size variable has been DCEd. -- jakub at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |dnovillo at gcc dot gnu dot | |org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33680