This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/55212] [SH] Switch from IRA to LRA
- From: "olegendo at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Sat, 13 Sep 2014 14:50:35 +0000
- Subject: [Bug target/55212] [SH] Switch from IRA to LRA
- Auto-submitted: auto-generated
- References: <bug-55212-4 at http dot gcc dot gnu dot org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55212
--- Comment #4 from Oleg Endo <olegendo at gcc dot gnu.org> ---
(In reply to Oleg Endo from comment #2)
> However, building __divsc3 still fails for -m2 -mb, now with the
> following:
>
> beh 0 0 0
> (insn 1159 1008 1120 27 (set (reg:QI 625)
> (mem/c:QI (plus:SI (reg/f:SI 153 sfp)
> (const_int 19 [0x13])) [2 %sfp+-1 S1 A8])) sh_tmp.cpp:45 -1
> (nil))
>
> sh_tmp.cpp: In function '__divsc3':
> sh_tmp.cpp:57:1: internal compiler error: in lra_set_insn_recog_data, at
> lra.c:947
> }
> ^
> 0x8524c29 lra_set_insn_recog_data(rtx_def*)
> ../../gcc-sh-lra/gcc/lra.c:947
> 0x85258cb lra_get_insn_recog_data
> ../../gcc-sh-lra/gcc/lra-int.h:468
> 0x85258cb lra_update_insn_regno_info
> ../../gcc-sh-lra/gcc/lra.c:1607
> 0x85258cb lra_update_insn_regno_info
> ../../gcc-sh-lra/gcc/lra.c:1598
> 0x8525b1b lra_push_insn_1
> ../../gcc-sh-lra/gcc/lra.c:1660
> 0x8525b1b lra_push_insn(rtx_def*)
> ../../gcc-sh-lra/gcc/lra.c:1668
> 0x8525d12 push_insns
> ../../gcc-sh-lra/gcc/lra.c:1711
> 0x852618f lra_process_new_insns(rtx_def*, rtx_def*, rtx_def*, char const*)
> ../../gcc-sh-lra/gcc/lra.c:1756
> 0x8533758 simplify_operand_subreg
> ../../gcc-sh-lra/gcc/lra-constraints.c:1523
> 0x8533758 curr_insn_transform
> ../../gcc-sh-lra/gcc/lra-constraints.c:3258
> 0x8535e2d lra_constraints(bool)
> ../../gcc-sh-lra/gcc/lra-constraints.c:4212
> 0x8526af8 lra(_IO_FILE*)
> ../../gcc-sh-lra/gcc/lra.c:2198
> 0x84e6823 do_reload
> ../../gcc-sh-lra/gcc/ira.c:5306
> 0x84e6823 execute
> ../../gcc-sh-lra/gcc/ira.c:5465
>
> The generated insn 1159 isn't recognized, because the displacement value is
> out of range.
When compiling for -m2a-nofpu -mb the problem goes away because SH2A can handle
the displacement. However, there are no QImode accesses in the resulting code
after LRA.