[Bug target/40375] New: redundant register move with -mthumb
carrot at google dot com
gcc-bugzilla@gcc.gnu.org
Mon Jun 8 03:21:00 GMT 2009
Compile the following code with -mthumb -O2 -Os,
extern void foo(int*, const char*, int);
void test(const char name[], int style)
{
foo(0, name, style);
}
I got:
push {r4, lr}
mov r3, r0 // A
mov r2, r1 // B
mov r0, #0 // C
mov r1, r3 // D
bl foo
pop {r4, pc}
Instructions A and D move register r0 to r1, actually it can be replaced with 1
instruction
mov r1, r0
and place it between B and C.
--
Summary: redundant register move with -mthumb
Product: gcc
Version: 4.5.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: carrot at google dot com
GCC build triplet: i686-linux
GCC host triplet: i686-linux
GCC target triplet: arm-eabi
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40375
More information about the Gcc-bugs
mailing list