https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78453
wilco at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |wilco at gcc dot gnu.org --- Comment #1 from wilco at gcc dot gnu.org --- (In reply to amker from comment #0) > Hi, > After revision 242549, arm-linux-gnueabihf bootstrap failed with below > message: > > ../../gcc/gcc/edit-context.c: In member function 'void > edit_context::print_diff(pretty_printer*, bool)': > ../../gcc/gcc/edit-context.c:299:1: error: insn does not satisfy its > constraints: > } > ^ > (insn 69 17 25 3 (set (mem/f/c:DI (plus:SI (reg/f:SI 13 sp) > (const_int 8 [0x8])) [39 c.m_outer_cb+0 S8 A64]) > (reg:DI 12 ip)) "../../gcc/gcc/typed-splay-tree.h":56 633 > {*movdi_vfp_cortexa8} That's a latent bug - see https://patchwork.ozlabs.org/patch/220135/ "In ARM mode only, the pair of registers IP and SP is allowed as operands in LDRD/STRD. To handle it, this patch defines a new constraint "q" to be CORE_REGS in ARM mode and GENERAL_REGS (i.e., equivalent to "r") otherwise. Note that in ARM mode "q" is not equivalent to "rk" because of the way constraints are matched. The new constraint "q" is used in place of "r" for DImode move between register and memory." So "q" is needed for strd on ARM, and this is used by movdi_vfp but not by movdi_vfp_cortexa8...