[Bug bootstrap/78453] arm-none-linux-gnueabihf bootstrap failed with revision 242549

2016-11-21 Thread bernd.edlinger at hotmail dot de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78453

Bernd Edlinger  changed:

   What|Removed |Added

 CC||bernd.edlinger at hotmail dot 
de

--- Comment #2 from Bernd Edlinger  ---
Yes, thanks.

I was using --with-tune=cortex-a9 in my bootstrap.

Therefore I had not seen this in my testing.

Can you post a patch?

[Bug bootstrap/78453] arm-none-linux-gnueabihf bootstrap failed with revision 242549

2016-11-21 Thread wilco at gcc dot gnu.org
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...