https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97252
--- Comment #2 from Alex Coplan <acoplan at gcc dot gnu.org> --- > Unless I'm missing something, I don't think "Uxi" is a valid constraint. > Perhaps the "Ux" constraint was intended instead? D'oh, this is of course the union of the Ux (MVE-specific) constraint and the "i" (general) constraint. It seems that the problem is that we need the const_vector to get force_const_mem'd into the constant pool, but the usual approach on AArch32 (without -mpure-code) seems to be to keep these constants around until the arm_reorg pass runs where they then get brought into a local literal pool. Of course, with -mpure-code, the literal pool is disabled, so we don't make this transformation. Looking at the same testcase on AArch64, we seem to force the const_vector out to the constant pool in LRA instead. Not sure what the right approach is for AArch32 here.