This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug bootstrap/78453] arm-none-linux-gnueabihf bootstrap failed with revision 242549
- From: "wilco at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Mon, 21 Nov 2016 20:50:23 +0000
- Subject: [Bug bootstrap/78453] arm-none-linux-gnueabihf bootstrap failed with revision 242549
- Auto-submitted: auto-generated
- References: <bug-78453-4@http.gcc.gnu.org/bugzilla/>
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...