| /* { 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 (); |
| } |