This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[ira] test for reload bug occurred on SH when IRA is used
- From: Vladimir Makarov <vmakarov at redhat dot com>
- To: gcc-patches <gcc-patches at gcc dot gnu dot org>
- Date: Thu, 10 Apr 2008 15:34:13 -0400
- Subject: [ira] test for reload bug occurred on SH when IRA is used
This patch adds a new test to check the reload bug which occurs on SH
when IRA is used.
2008-04-10 Vladimir Makarov <vmakarov@redhat.com>
* gcc.dg/200804010-1.c: New.
Index: testsuite/gcc.dg/20080410-1.c
===================================================================
--- testsuite/gcc.dg/20080410-1.c (revision 0)
+++ testsuite/gcc.dg/20080410-1.c (revision 0)
@@ -0,0 +1,28 @@
+/* { dg-do compile { target "sh-*-*" } } */
+/* { dg-options "-O0 -m4 -ml -fira" } */
+/* { dg-final { scan-assembler-not "add\tr0,r0" } } */
+
+/* This test checks that chain reloads conflict. I they don't
+ conflict, the same hard register R0 is used for the both reloads
+ but in this case the second reload needs an intermediate register
+ (which is the reload register). As the result we have the
+ following code
+
+ mov #4,r0 -- first reload
+ mov r14,r0 -- second reload
+ add r0,r0 -- second reload
+
+ The right code should be
+
+ mov #4,r0 -- first reload
+ mov r14,r1 -- second reload
+ add r0,r1 -- second reload
+
+*/
+
+_Complex float foo_float ();
+
+void bar_float ()
+{
+ __real foo_float ();
+}