Compiling this code:
extern int waiting_for_initial_map;
extern int close (int __fd);
void
first_map_occurred(void)
{
close(cp_pipe[0]);
close(pc_pipe[1]);
waiting_for_initial_map = 0;
}
using -O2 -march=i686 4.[01] generate sequences like:
movl cp_pipe, %eax
movl %eax, (%esp)
for calling the close function
the Intel compiler generates:
pushl cp_pipe
--
Summary: inefficient parameter passing on x86
Product: gcc
Version: 4.1.0
Status: UNCONFIRMED
Severity: enhancement
Priority: P2
Component: target
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: dann at godzilla dot ics dot uci dot edu
CC: gcc-bugs at gcc dot gnu dot org
GCC target triplet: i686-pc-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23525