https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115466
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Last reconfirmed| |2024-06-12 Status|UNCONFIRMED |WAITING --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- > int ia[8] = {1, 2, 3, 4, 5, 6, 7, 8}; > float fa[8] = {10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0}; The way vec_ld works is is (a+b)&~0xf is the address which is being loaded. Both ia and fa are not specified as being aligned to the 16byte boundary so it could be loading from before hand. What happens if you do: int ia[8] __attribute__((aligned(16))) = {1, 2, 3, 4, 5, 6, 7, 8}; float fa[8] __attribute__((aligned(16))) = {10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0}; Instead?