Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
4.1.3
-
None
-
gcc 3.2.3, x86 Linux
-
Inefficiency
Description
I don't know if it's the compiler that's generating worse code for the stdcxx version of min or if the function is not implemented as efficiently as it could be but the disassembly for the two functions below shows that my_min() is one instruction shorter than test_min():
#include <algorithm>
int test_min (int x, int y)
int my_min (int x, int y)
{ return x < y ? x : y; }_Z8test_minii:
pushl %ebp
movl %esp, %ebp
movl 12(%ebp), %eax
cmpl %eax, 8(%ebp)
jg .L2
leal 8(%ebp), %eax <<< extra load?
.L4:
movl (%eax), %eax
leave
ret
_Z6my_minii:
pushl %ebp
movl %esp, %ebp
movl 12(%ebp), %eax
cmpl 8(%ebp), %eax
jle .L6
movl 8(%ebp), %eax
.L6:
leave
ret