DESCRIPTION: ---------------------------------------- Simple test case is below. There is redundant stack manipulation in the assembly output. Use gcc -Wall -Os -S test.c ----------------------------------------- VERSION INFO: ---------------------------------- gcc -v Using built-in specs. Target: i486-linux-gnu Configured with: ../src/configure -v --enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --program-suffix=-4.1 --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --enable-mpfr --enable-checking=release i486-linux-gnu Thread model: posix gcc version 4.1.2 20060928 (prerelease) (Ubuntu 4.1.1-13ubuntu5) ----------------------------------- SOURCE CODE: ---------------------------------- extern int ii(int i); void mm() { int i=99; more: i = ii(i); goto inc; inc: if(i==0) goto more; i++; goto more; } ---------------------------------------
What exactly do you mean with redundant stack manipulation? Note that the ABI requires the stack to be aligned properly at function entry which makes stack adjustment necessary before the call. Note also that you can use -maccumulate-outgoing-args to reduce the number of stack operations, but that may cause bigger code in some cases.
Arrrg! I'm very sorry. Please ignore this bug report. I'll change the status to INVALID if that's okay. Thanks for your response. Reza.