https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71270
--- Comment #2 from vekumar at gcc dot gnu.org --- Looked at x86_64 gimple code for intrinsic_pack_1.f90. After the SLP split we now vectorize at the place where we pass constant arguments via a parameterstructure to _gfortran_pack call. Before parm.20D.3555.dtypeD.3497 = 297; # .MEM_242 = VDEF <.MEM_241> parm.20D.3555.dimD.3502[0].lboundD.3499 = 1; # .MEM_243 = VDEF <.MEM_242> parm.20D.3555.dimD.3502[0].uboundD.3500 = 9; # .MEM_244 = VDEF <.MEM_243> parm.20D.3555.dimD.3502[0].strideD.3498 = 1; # .MEM_245 = VDEF <.MEM_244> parm.20D.3555.dataD.3495 = &d_ri4D.3433[0]; # .MEM_246 = VDEF <.MEM_245> parm.20D.3555.offsetD.3496 = -1; After # .MEM_243 = VDEF <.MEM_1566> parm.20D.3555.dimD.3502[0].uboundD.3500 = 9; # .MEM_245 = VDEF <.MEM_243> parm.20D.3555.dataD.3495 = &d_ri4D.3433[0]; # .MEM_992 = VDEF <.MEM_245> MEM[(integer(kind=8)D.9 *)&parm.20D.3555 + 8B] = vect_cst__993; # PT = anything # ALIGN = 16, MISALIGN = 8 _984 = &parm.20D.3555.offsetD.3496 + 16; # .MEM_983 = VDEF <.MEM_992> MEM[(integer(kind=8)D.9 *)_984] = vect_cst__999; vect_cst__993={-1,297} vect_cst__999={1,1} Other places looks similar. This looks like correct gimple. I am verifying the gimple generated for arm big endian target.