Contributors:
- Jakub Jelinek
Delivery Date:
- Available now.
Description:
- This patch optimizes out saving of unneeded arguments to stack in vararg functions if the compiler can prove that they will not be needed. Detailed description in:
Benefits:
- On some architectures the ... overhead is pretty high as many registers are saved although e.g. floating point va_arg is never used and the va_list never escapes the function. Especially if it means the only use of FPU unit on an otherwise mostly integer only program with lazy FPU handling by the OS
Risks:
- Handling of va_list struct types and alpha va_list seems to work, but there were bugs in the char */void * va_list handling in presence of aggresive optimizations, so that's ATM disabled in the current version of the patch and will need rewriting to be reliable. Though, the benefit of the patch is mainly for the arches where it works already.
Status:
Patch posted for review: http://gcc.gnu.org/ml/gcc-patches/2005-03/msg02897.html