When compiling with -O2, a sibling call will sometimes copy all the arguments
twice: first into temporaries at the beginning of the function, then back to
their original places before the call.
Here's a test case that demonstrates it:
extern void f2(), f3();
void f(int a,int b,int c,int d,int e,int ff,int g,int h,int i,int j) {
f2();
f3(a,b,c,d,e,ff,g,h,i,j);
}
(the problem only shows up if there's other stuff in the function besides the
sibling call)
--
Summary: sibling call with -O2 copies parameters twice
Product: gcc
Version: 3.4.4
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: mrnobo1024 at yahoo dot com
CC: gcc-bugs at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24156