blob: 6e9e9c14476f9bd14b3a65a9a8088074dba156a9 [file] [log] [blame]
/* { dg-do compile { target { little_endian } } } */
/* { dg-options "-O0" } */
/* { dg-final { scan-assembler-not "add\tr0,r0" } } */
/* This test checks chain reloads conflicts. If 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 ();
}