"Karsten W. Rohrbach" wrote:
> refer to http://www.gnu.org/software/gcc/gcc-3.0/features.html
> 
> ---
> General Optimizer Improvements:
>     - Basic block reordering pass.
>     - New if-conversion pass with support for conditional (predicated)
>       execution.
>     - New tail call and sibling call elimination optimizations.

This alone is enough to sell me on moving to the new version
of the compiler.

>     - New register renaming pass.
>     - New (experimental) static single assignment (SSA) representation
>       support.
>     - New dead-code elimination pass implemented using the SSA representation.
>     - Global null pointer test elimination.
>     - Global code hoisting/unification.
>     - More builtins and optimizations for stdio.h, string.h and old BSD
>       functions, as well as for ISO C99 functions.
>     - New builtin __builtin_expect for giving hints to the branch predictor.

FWIW: tail-call optimization is when I have a function
that, as it's last thing (perhaps after reordering by
the compiler, as well) calls another function, such
that the return value of the other function is its
return value.

This permits you to replace:

        push args on stack
        call function
        push args on stack
        call function
        ret
        restore stack
        ret
        restore stack

With:

        push args on stack
        call function
        do minor stack stuff
        jmp function
        ret
        restore stack


-- Terry

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to