mthumb: generate a tail-call

Shaun Jackman sjackman@gmail.com
Wed May 10 20:38:00 GMT 2006


What optimisation option is needed to prod arm-elf-gcc -mthumb to
generate a tail call? ARM works as expected.

Please cc me in your reply. Thanks!
Shaun

arm-elf-gcc (GCC) 4.1.0

$ cat <<EOF >tail.c
int tail(void);
int main()
{
        return tail();
}
EOF
$ arm-elf-gcc -mthumb -S -O2 tail.c
$ sed -ne '/^main/,/pop/p' tail.s
main:
        push    {lr}
        bl      tail
        @ sp needed for prologue
        pop     {pc}
        .size   main, .-main
        .ident  "GCC: (GNU) 4.1.0"
$ arm-elf-gcc -S -O2 tail.c
$ sed -ne '/^main/,/pop/p' tail.s
main:
        @ args = 0, pretend = 0, frame = 0
        @ frame_needed = 0, uses_anonymous_args = 0
        @ link register save eliminated.
        @ lr needed for prologue
        b       tail
        .size   main, .-main
        .ident  "GCC: (GNU) 4.1.0"


More information about the Gcc mailing list