2008-04-10 Vladimir Makarov <vmakarov@redhat.com>
[official-gcc.git] / gcc / testsuite / gcc.dg / 20080410-1.c
blobebd783dd05d80bf0e8d553140894d75263f8e250
1 /* { dg-do compile { target "sh-*-*" } } */
2 /* { dg-options "-O0 -m4 -ml -fira" } */
3 /* { dg-final { scan-assembler-not "add\tr0,r0" } } */
5 /* This test checks that chain reloads conflict. I they don't
6 conflict, the same hard register R0 is used for the both reloads
7 but in this case the second reload needs an intermediate register
8 (which is the reload register). As the result we have the
9 following code
11 mov #4,r0 -- first reload
12 mov r14,r0 -- second reload
13 add r0,r0 -- second reload
15 The right code should be
17 mov #4,r0 -- first reload
18 mov r14,r1 -- second reload
19 add r0,r1 -- second reload
23 _Complex float foo_float ();
25 void bar_float ()
27 __real foo_float ();