2018-05-17 Richard Biener <rguenther@suse.de>
[official-gcc.git] / gcc / testsuite / gcc.target / sh / 20080410-1.c
blob6e9e9c14476f9bd14b3a65a9a8088074dba156a9
1 /* { dg-do compile { target { little_endian } } } */
2 /* { dg-options "-O0" } */
3 /* { dg-final { scan-assembler-not "add\tr0,r0" } } */
5 /* This test checks chain reloads conflicts. If 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 ();