https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102700

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|---                         |12.0

--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
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.

Reply via email to