http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49742
Ramana Radhakrishnan <ramana at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |ice-on-valid-code Status|UNCONFIRMED |NEW Last reconfirmed| |2011.07.15 00:16:49 Ever Confirmed|0 |1 --- Comment #3 from Ramana Radhakrishnan <ramana at gcc dot gnu.org> 2011-07-15 00:16:49 UTC --- Before jumping in to the target I'm not sure I totally understand what the tree optimizers are doing here. Why are the tree level forms producing ... vect_array.21_I_lsm0.31_37 = vect_array.21[0]; dump_tree_optimized shows : unsigned int in.53; unsigned int D.3755; void * D.3750; unsigned int D.3748; int[8] * D.3749; void * D.3744; unsigned int ivtmp.37; unsigned int ivtmp.33; vector(2) int vect_array.21_I_lsm0.31; vector(2) int * vect_pout2.26; vector(2) int vect_array.21[4]; vector(2) int vect_var_.12; vector(2) int vect_var_.11; vector(2) int vect_var_.10; vector(2) int vect_var_.9; <bb 2>: vect_array.21_I_lsm0.31_37 = vect_array.21[0]; ivtmp.33_59 = (unsigned int) &in[8]; ivtmp.37_4 = (unsigned int) &out[8]; in.53_75 = (unsigned int) ∈ D.3755_76 = in.53_75 + 2080; <bb 3>: # vect_pout2.26_63 = PHI <vect_pout2.26_64(3), &out2(2)> # ivtmp.33_31 = PHI <ivtmp.33_3(3), ivtmp.33_59(2)> # ivtmp.37_60 = PHI <ivtmp.37_61(3), ivtmp.37_4(2)> D.3748_12 = ivtmp.33_31 + 4294967264; D.3749_13 = (int[8] *) D.3748_12; D.3744_6 = (void *) ivtmp.33_31; vect_var_.9_42 = MEM[base: D.3744_6, offset: 4294967264B]; vect_var_.10_44 = MEM[base: D.3744_6, offset: 4294967272B]; vect_var_.11_46 = MEM[base: D.3744_6, offset: 4294967280B]; vect_var_.12_48 = MEM[base: D.3744_6, offset: 4294967288B]; vect_array.21 = LOAD_LANES (MEM[(int[512] *)D.3749_13]); D.3750_21 = (void *) ivtmp.37_60; MEM[base: D.3750_21, offset: 4294967264B] = vect_var_.9_42; MEM[base: D.3750_21, offset: 4294967272B] = vect_var_.10_44; MEM[base: D.3750_21, offset: 4294967280B] = vect_var_.11_46; MEM[base: D.3750_21, offset: 4294967288B] = vect_var_.12_48; MEM[base: vect_pout2.26_63, offset: 0B] = vect_array.21_I_lsm0.31_37; vect_pout2.26_64 = vect_pout2.26_63 + 8; ivtmp.33_3 = ivtmp.33_31 + 32; ivtmp.37_61 = ivtmp.37_60 + 32; if (ivtmp.33_3 != D.3755_76) goto <bb 3>; else goto <bb 4>; <bb 4>: return; Look at vect_array.21_I_lsm0.31_37 - it's being initialized even before vect_array.21 has been ! I'm not sure I quite follow the transformations here till this point. Ramana