This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/55212] [SH] Switch to LRA
- From: "kkojima at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Sat, 11 Oct 2014 03:37:40 +0000
- Subject: [Bug target/55212] [SH] Switch 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 #58 from Kazumoto Kojima <kkojima at gcc dot gnu.org> ---
(In reply to Kazumoto Kojima from comment #57)
> revised patch for the problem in c#25
I've looked into the remained ICEs for usual sh4-unknown-linux-gnu
test and got that they are similar to the ICE in c#25.
The original insn is a move insn from/to a memory with base+index
addressing which requires r0 for index reg on SH. The other operand
of that insn has an equivalence with a memory of which load/store
uses r0 for some reason. The tipical example is a memory of which
addressing is base+index and base+a_small_display_constant which
can fit to mov.[bwl] r0,@(disp,rm)/@(disp,rm),r0 instructions.
The patch introduces a new tergetm fuction and hides equivalences
for such cases. The default tergetm fuction simply do nothing and
shouldn't impact the other targets.
The patch might be a bit overkill for SH. We need to see the code
quality.
With c#29 + c#55 + c#57 patches, all ICEs went away on sh4-linux.
compare_tests against trunk rev.215912 says
--
New tests that FAIL:
g++.dg/cpp1y/feat-cxx14.C -std=gnu++1y (test for excess errors)
gcc.target/sh/pr50749-sf-postinc-1.c scan-assembler-times
fmov.s\\t@r[0-9]+\\\\+,fr[0-9]+ 1
gcc.target/sh/pr50749-sf-postinc-3.c scan-assembler-times
fmov.s\\t@r[0-9]+\\\\+,fr[0-9]+ 1
Old tests that failed, that have disappeared: (Eeek!)
gcc.dg/atomic/c11-atomic-exec-4.c -Os (internal compiler error)
gcc.dg/atomic/c11-atomic-exec-4.c -Os (test for excess errors)
libgomp.fortran/udr14.f90 -O3 -g (internal compiler error)
libgomp.fortran/udr14.f90 -O3 -g (test for excess errors)
--
The first new FAIL looks a test glitch and it turned out that
pr50749-sf-postinc-1.c FAILs can be easily fixed.
It looks that the LRA change suggested in c#56 is related about
the optimization based with equivalences. I'd like to try it
on sh-lra.