https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102700
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Richard Biener from comment #5) > Vectorization can only maintain one of the locations: > > - [t.ii:9:8] _6 = foo.ptr; > - [t.ii:9:8] [t.ii:9:8] D.2488.ptr = _6; > + [t.ii:9:8] vect__6.9_12 = MEM <vector(2) int> [(int *)&foo]; > [t.ii:4:5] MEM[(struct shared_count *)[t.ii:20:3] &D.2488 + 4B] ={v} > {CLOBBER}; > - [t.ii:4:13] _7 = [t.ii:4:13] MEM[(struct shared_count &)[t.ii:20:11] &foo > + 4].pi; > - [t.ii:4:7] [t.ii:4:7] MEM[(struct shared_count *)[t.ii:20:3] &D.2488 + > 4B].pi = _7; > + [t.ii:9:8] MEM <vector(2) int> [(int *)&D.2488] = vect__6.9_12; > > so we combine the reads at t.ii:9:8 and t.ii:4:7 (that's the uninitialized > one) > into a vector read at t.ii:9:8. I don't see how GCCs IL allows us to do > better. Well, if DWARF6 agrees on some way how to debug vectorized code, maybe we'll need to figure out a way how to encode multiple locations.