interestingly
float test(float a, float b)
{
return(a*b);
}
compiles to (gcc -O3 -S float.c -o float.s)
str lr, [sp,#-4]!
bl __mulsf3
ldr pc, [sp], #4
which calls another function to do the multiply. I thought it might inline the body of the multiply, but I guess that would really bloat the code.