Unexpected instruction sequence on MIPS

Ryan Mansfield rmansfield@qnx.com
Tue Nov 14 12:19:00 GMT 2006


Aaron W. LaFramboise wrote:
> On a GCC 4.1.1 cross targeted to mips-mips-elf, this C input file:
> 
> int sum(int a, int b) {
>   return a + b + 42;
> }
> 
> produces this output with -O3:
> 
> addiu   v0,a0,42
> jr      ra
> addu    v0,a1,v0
> 
> Why does the compiler place "jr" before "addu"?

The compiler reorders the instructions to take advantage of the branch 
delay slot. Take a look at the output with -fno-delayed-branch.

Regards,

Ryan Mansfield



More information about the Gcc-help mailing list