Created
September 28, 2012 06:42
-
-
Save clowwindy/3798298 to your computer and use it in GitHub Desktop.
-fno-optimize-sibling-calls
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.file "test.c" | |
.text | |
.p2align 4,,15 | |
.globl fibonacci | |
.type fibonacci, @function | |
fibonacci: | |
.LFB11: | |
.cfi_startproc | |
movq %rbx, -48(%rsp) | |
movq %rbp, -40(%rsp) | |
movl %edi, %ebx | |
.cfi_offset 6, -48 | |
.cfi_offset 3, -56 | |
movq %r12, -32(%rsp) | |
movq %r13, -24(%rsp) | |
movq %r14, -16(%rsp) | |
movq %r15, -8(%rsp) | |
subq $56, %rsp | |
.cfi_def_cfa_offset 64 | |
.cfi_offset 15, -16 | |
.cfi_offset 14, -24 | |
.cfi_offset 13, -32 | |
.cfi_offset 12, -40 | |
cmpl $1, %edi | |
jle .L2 | |
leal -2(%rbx), %r12d | |
cmpl $1, %r12d | |
jle .L3 | |
leal -4(%rbx), %r13d | |
cmpl $1, %r13d | |
jle .L4 | |
leal -6(%rbx), %ebp | |
cmpl $1, %ebp | |
jle .L5 | |
leal -8(%rbx), %edi | |
xorl %eax, %eax | |
call fibonacci | |
leal -7(%rbx), %edi | |
movl %eax, %ebp | |
xorl %eax, %eax | |
call fibonacci | |
leal (%rax,%rbp), %ebp | |
.L5: | |
leal -1(%r13), %r14d | |
cmpl $1, %r14d | |
je .L6 | |
leal -3(%r13), %edi | |
xorl %eax, %eax | |
call fibonacci | |
leal -2(%r13), %edi | |
movl %eax, %r14d | |
xorl %eax, %eax | |
call fibonacci | |
leal (%rax,%r14), %r14d | |
.L6: | |
leal (%r14,%rbp), %r13d | |
.L4: | |
leal -1(%r12), %ebp | |
cmpl $1, %ebp | |
je .L7 | |
leal -3(%r12), %r14d | |
cmpl $1, %r14d | |
jle .L8 | |
leal -5(%r12), %edi | |
xorl %eax, %eax | |
call fibonacci | |
leal -4(%r12), %edi | |
movl %eax, %r14d | |
xorl %eax, %eax | |
call fibonacci | |
leal (%rax,%r14), %r14d | |
.L8: | |
leal -1(%rbp), %r15d | |
cmpl $1, %r15d | |
je .L9 | |
leal -3(%rbp), %r12d | |
xorl %eax, %eax | |
movl %r12d, %edi | |
call fibonacci | |
movl %eax, %r15d | |
leal -2(%rbp), %eax | |
cmpl $1, %eax | |
je .L10 | |
leal -4(%rbp), %edi | |
xorl %eax, %eax | |
call fibonacci | |
movl %r12d, %edi | |
movl %eax, %ebp | |
xorl %eax, %eax | |
call fibonacci | |
addl %ebp, %eax | |
.L10: | |
leal (%rax,%r15), %r15d | |
.L9: | |
leal (%r15,%r14), %ebp | |
.L7: | |
leal 0(%rbp,%r13), %r12d | |
.L3: | |
leal -1(%rbx), %ebp | |
cmpl $1, %ebp | |
je .L11 | |
leal -3(%rbx), %r13d | |
cmpl $1, %r13d | |
jle .L12 | |
leal -5(%rbx), %r14d | |
cmpl $1, %r14d | |
jle .L13 | |
leal -7(%rbx), %r15d | |
cmpl $1, %r15d | |
jle .L14 | |
leal -9(%rbx), %edi | |
xorl %eax, %eax | |
call fibonacci | |
leal -8(%rbx), %edi | |
movl %eax, %r15d | |
xorl %eax, %eax | |
call fibonacci | |
leal (%rax,%r15), %r15d | |
.L14: | |
leal -1(%r14), %ebx | |
cmpl $1, %ebx | |
je .L15 | |
leal -3(%r14), %edi | |
xorl %eax, %eax | |
call fibonacci | |
leal -2(%r14), %edi | |
movl %eax, %ebx | |
xorl %eax, %eax | |
call fibonacci | |
leal (%rax,%rbx), %ebx | |
.L15: | |
leal (%rbx,%r15), %r14d | |
.L13: | |
leal -1(%r13), %ebx | |
cmpl $1, %ebx | |
je .L16 | |
leal -3(%r13), %r15d | |
cmpl $1, %r15d | |
jle .L17 | |
leal -5(%r13), %edi | |
xorl %eax, %eax | |
call fibonacci | |
leal -4(%r13), %edi | |
movl %eax, %r15d | |
xorl %eax, %eax | |
call fibonacci | |
leal (%rax,%r15), %r15d | |
.L17: | |
leal -1(%rbx), %r13d | |
cmpl $1, %r13d | |
je .L18 | |
leal -3(%rbx), %edi | |
xorl %eax, %eax | |
call fibonacci | |
leal -2(%rbx), %edi | |
movl %eax, %r13d | |
xorl %eax, %eax | |
call fibonacci | |
leal (%rax,%r13), %r13d | |
.L18: | |
leal 0(%r13,%r15), %ebx | |
.L16: | |
leal (%rbx,%r14), %r13d | |
.L12: | |
leal -1(%rbp), %ebx | |
cmpl $1, %ebx | |
je .L19 | |
leal -3(%rbp), %r14d | |
cmpl $1, %r14d | |
jle .L20 | |
leal -5(%rbp), %r15d | |
cmpl $1, %r15d | |
jle .L21 | |
leal -7(%rbp), %edi | |
xorl %eax, %eax | |
call fibonacci | |
leal -6(%rbp), %edi | |
movl %eax, %r15d | |
xorl %eax, %eax | |
call fibonacci | |
leal (%rax,%r15), %r15d | |
.L21: | |
leal -1(%r14), %ebp | |
cmpl $1, %ebp | |
je .L22 | |
leal -3(%r14), %edi | |
xorl %eax, %eax | |
call fibonacci | |
leal -2(%r14), %edi | |
movl %eax, %ebp | |
xorl %eax, %eax | |
call fibonacci | |
leal (%rax,%rbp), %ebp | |
.L22: | |
leal 0(%rbp,%r15), %r14d | |
.L20: | |
leal -1(%rbx), %ebp | |
cmpl $1, %ebp | |
je .L23 | |
leal -3(%rbx), %r15d | |
cmpl $1, %r15d | |
jle .L24 | |
leal -5(%rbx), %edi | |
xorl %eax, %eax | |
call fibonacci | |
leal -4(%rbx), %edi | |
movl %eax, %r15d | |
xorl %eax, %eax | |
call fibonacci | |
leal (%rax,%r15), %r15d | |
.L24: | |
leal -1(%rbp), %ebx | |
cmpl $1, %ebx | |
je .L25 | |
leal -3(%rbp), %edi | |
xorl %eax, %eax | |
call fibonacci | |
leal -2(%rbp), %edi | |
movl %eax, %ebx | |
xorl %eax, %eax | |
call fibonacci | |
leal (%rax,%rbx), %ebx | |
.L25: | |
leal (%rbx,%r15), %ebp | |
.L23: | |
leal 0(%rbp,%r14), %ebx | |
.L19: | |
leal (%rbx,%r13), %ebp | |
.L11: | |
leal 0(%rbp,%r12), %ebx | |
.L2: | |
movl %ebx, %eax | |
movq 16(%rsp), %rbp | |
movq 8(%rsp), %rbx | |
movq 24(%rsp), %r12 | |
movq 32(%rsp), %r13 | |
movq 40(%rsp), %r14 | |
movq 48(%rsp), %r15 | |
addq $56, %rsp | |
.cfi_def_cfa_offset 8 | |
ret | |
.cfi_endproc | |
.LFE11: | |
.size fibonacci, .-fibonacci | |
.section .rodata.str1.1,"aMS",@progbits,1 | |
.LC0: | |
.string "%d\n" | |
.text | |
.p2align 4,,15 | |
.globl main | |
.type main, @function | |
main: | |
.LFB12: | |
.cfi_startproc | |
pushq %rbx | |
.cfi_def_cfa_offset 16 | |
.cfi_offset 3, -16 | |
movl $40, %edi | |
xorl %eax, %eax | |
call fibonacci | |
movl $41, %edi | |
movl %eax, %ebx | |
xorl %eax, %eax | |
call fibonacci | |
leal (%rax,%rbx), %esi | |
movl $.LC0, %edi | |
xorl %eax, %eax | |
call printf | |
xorl %eax, %eax | |
popq %rbx | |
.cfi_def_cfa_offset 8 | |
ret | |
.cfi_endproc | |
.LFE12: | |
.size main, .-main | |
.ident "GCC: (GNU) 4.4.6 20110731 (Red Hat 4.4.6-3)" | |
.section .note.GNU-stack,"",@progbits |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.file "test.c" | |
.text | |
.p2align 4,,15 | |
.globl fibonacci | |
.type fibonacci, @function | |
fibonacci: | |
.LFB11: | |
.cfi_startproc | |
pushq %r15 | |
.cfi_def_cfa_offset 16 | |
.cfi_offset 15, -16 | |
movl %edi, %eax | |
subl $12, %eax | |
pushq %r14 | |
.cfi_def_cfa_offset 24 | |
.cfi_offset 14, -24 | |
pushq %r13 | |
.cfi_def_cfa_offset 32 | |
.cfi_offset 13, -32 | |
pushq %r12 | |
.cfi_def_cfa_offset 40 | |
.cfi_offset 12, -40 | |
pushq %rbp | |
.cfi_def_cfa_offset 48 | |
.cfi_offset 6, -48 | |
pushq %rbx | |
.cfi_def_cfa_offset 56 | |
.cfi_offset 3, -56 | |
subq $104, %rsp | |
.cfi_def_cfa_offset 160 | |
movl %edi, 32(%rsp) | |
movl %eax, 36(%rsp) | |
movl $0, 92(%rsp) | |
.L23: | |
cmpl $1, 32(%rsp) | |
jle .L2 | |
movl 36(%rsp), %eax | |
movl $0, 88(%rsp) | |
addl $10, %eax | |
movl %eax, 64(%rsp) | |
movl 36(%rsp), %eax | |
movl %eax, 44(%rsp) | |
.L22: | |
cmpl $1, 64(%rsp) | |
jle .L3 | |
movl 44(%rsp), %eax | |
movl $0, 84(%rsp) | |
addl $8, %eax | |
movl %eax, 60(%rsp) | |
movl 44(%rsp), %eax | |
movl %eax, 40(%rsp) | |
.L21: | |
cmpl $1, 60(%rsp) | |
jle .L4 | |
movl 40(%rsp), %eax | |
movl $0, 80(%rsp) | |
addl $6, %eax | |
movl %eax, 56(%rsp) | |
movl 40(%rsp), %eax | |
movl %eax, 24(%rsp) | |
.L20: | |
cmpl $1, 56(%rsp) | |
jle .L5 | |
movl 24(%rsp), %eax | |
movl $0, 76(%rsp) | |
addl $4, %eax | |
movl %eax, 28(%rsp) | |
movl 24(%rsp), %eax | |
addl $2, %eax | |
movl %eax, 48(%rsp) | |
movl 24(%rsp), %eax | |
movl %eax, 68(%rsp) | |
.L19: | |
cmpl $1, 28(%rsp) | |
jle .L6 | |
movl 48(%rsp), %eax | |
movl $0, 52(%rsp) | |
cmpl $1, %eax | |
jle .L8 | |
movl 28(%rsp), %eax | |
subl $6, %eax | |
movl %eax, 72(%rsp) | |
movl 68(%rsp), %eax | |
movl %eax, 20(%rsp) | |
.L18: | |
movl 20(%rsp), %eax | |
movl $0, 16(%rsp) | |
cmpl $1, %eax | |
jle .L10 | |
movl 72(%rsp), %r15d | |
subl $4, %eax | |
movl %eax, 12(%rsp) | |
.L17: | |
xorl %r14d, %r14d | |
cmpl $1, %r15d | |
movl %r15d, %eax | |
jle .L12 | |
movl 12(%rsp), %r12d | |
leal -4(%r15), %r13d | |
.p2align 4,,10 | |
.p2align 3 | |
.L16: | |
xorl %ebp, %ebp | |
cmpl $1, %r12d | |
movl %r12d, %eax | |
movl %r13d, %ebx | |
jle .L14 | |
.p2align 4,,10 | |
.p2align 3 | |
.L25: | |
movl %ebx, %edi | |
xorl %eax, %eax | |
subl $1, %ebx | |
call fibonacci | |
addl %eax, %ebp | |
leal 2(%rbx), %eax | |
cmpl $1, %eax | |
jg .L25 | |
movl $1, %eax | |
.L14: | |
subl $1, %r12d | |
addl %eax, %ebp | |
subl $1, %r13d | |
leal 2(%r12), %eax | |
addl %ebp, %r14d | |
cmpl $1, %eax | |
jg .L16 | |
movl $1, %eax | |
.L12: | |
subl $1, %r15d | |
leal (%r14,%rax), %eax | |
addl %eax, 16(%rsp) | |
leal 2(%r15), %eax | |
subl $1, 12(%rsp) | |
cmpl $1, %eax | |
jg .L17 | |
movl $1, %eax | |
.L10: | |
addl 16(%rsp), %eax | |
subl $1, 20(%rsp) | |
addl %eax, 52(%rsp) | |
movl 20(%rsp), %eax | |
subl $1, 72(%rsp) | |
addl $2, %eax | |
cmpl $1, %eax | |
jg .L18 | |
movl $1, %eax | |
.L8: | |
addl 52(%rsp), %eax | |
subl $1, 28(%rsp) | |
addl %eax, 76(%rsp) | |
subl $1, 48(%rsp) | |
subl $1, 68(%rsp) | |
jmp .L19 | |
.L6: | |
movl 28(%rsp), %eax | |
addl 76(%rsp), %eax | |
subl $1, 56(%rsp) | |
addl %eax, 80(%rsp) | |
subl $1, 24(%rsp) | |
jmp .L20 | |
.L5: | |
movl 80(%rsp), %eax | |
addl 56(%rsp), %eax | |
subl $1, 60(%rsp) | |
addl %eax, 84(%rsp) | |
subl $1, 40(%rsp) | |
jmp .L21 | |
.L4: | |
movl 60(%rsp), %eax | |
addl 84(%rsp), %eax | |
subl $1, 64(%rsp) | |
addl %eax, 88(%rsp) | |
subl $1, 44(%rsp) | |
jmp .L22 | |
.L3: | |
movl 88(%rsp), %eax | |
addl 64(%rsp), %eax | |
subl $1, 32(%rsp) | |
addl %eax, 92(%rsp) | |
subl $1, 36(%rsp) | |
jmp .L23 | |
.L2: | |
movl 92(%rsp), %eax | |
addl 32(%rsp), %eax | |
addq $104, %rsp | |
.cfi_def_cfa_offset 56 | |
popq %rbx | |
.cfi_def_cfa_offset 48 | |
popq %rbp | |
.cfi_def_cfa_offset 40 | |
popq %r12 | |
.cfi_def_cfa_offset 32 | |
popq %r13 | |
.cfi_def_cfa_offset 24 | |
popq %r14 | |
.cfi_def_cfa_offset 16 | |
popq %r15 | |
.cfi_def_cfa_offset 8 | |
ret | |
.cfi_endproc | |
.LFE11: | |
.size fibonacci, .-fibonacci | |
.section .rodata.str1.1,"aMS",@progbits,1 | |
.LC0: | |
.string "%d\n" | |
.text | |
.p2align 4,,15 | |
.globl main | |
.type main, @function | |
main: | |
.LFB12: | |
.cfi_startproc | |
pushq %r15 | |
.cfi_def_cfa_offset 16 | |
.cfi_offset 15, -16 | |
pushq %r14 | |
.cfi_def_cfa_offset 24 | |
.cfi_offset 14, -24 | |
pushq %r13 | |
.cfi_def_cfa_offset 32 | |
.cfi_offset 13, -32 | |
pushq %r12 | |
.cfi_def_cfa_offset 40 | |
.cfi_offset 12, -40 | |
pushq %rbp | |
.cfi_def_cfa_offset 48 | |
.cfi_offset 6, -48 | |
pushq %rbx | |
.cfi_def_cfa_offset 56 | |
.cfi_offset 3, -56 | |
subq $88, %rsp | |
.cfi_def_cfa_offset 144 | |
movl $30, 12(%rsp) | |
movl $0, 76(%rsp) | |
.L52: | |
movl 12(%rsp), %eax | |
movl $0, 72(%rsp) | |
addl $10, %eax | |
movl %eax, 48(%rsp) | |
movl 12(%rsp), %eax | |
movl %eax, 28(%rsp) | |
.L51: | |
cmpl $1, 48(%rsp) | |
jle .L32 | |
movl 28(%rsp), %eax | |
movl $0, 68(%rsp) | |
addl $8, %eax | |
movl %eax, 44(%rsp) | |
movl 28(%rsp), %eax | |
movl %eax, 24(%rsp) | |
.L50: | |
cmpl $1, 44(%rsp) | |
jle .L33 | |
movl 24(%rsp), %eax | |
movl $0, 64(%rsp) | |
addl $6, %eax | |
movl %eax, 40(%rsp) | |
movl 24(%rsp), %eax | |
movl %eax, 16(%rsp) | |
.L49: | |
cmpl $1, 40(%rsp) | |
jle .L34 | |
movl 16(%rsp), %eax | |
movl $0, 60(%rsp) | |
addl $4, %eax | |
movl %eax, 20(%rsp) | |
movl 16(%rsp), %eax | |
addl $2, %eax | |
movl %eax, 32(%rsp) | |
movl 16(%rsp), %eax | |
movl %eax, 52(%rsp) | |
.L48: | |
cmpl $1, 20(%rsp) | |
jle .L35 | |
movl 32(%rsp), %eax | |
movl $0, 36(%rsp) | |
cmpl $1, %eax | |
jle .L37 | |
movl 20(%rsp), %eax | |
subl $6, %eax | |
movl %eax, 56(%rsp) | |
movl 52(%rsp), %eax | |
movl %eax, 8(%rsp) | |
.L47: | |
movl 8(%rsp), %eax | |
movl $0, 4(%rsp) | |
cmpl $1, %eax | |
jle .L39 | |
movl 56(%rsp), %r15d | |
subl $4, %eax | |
movl %eax, (%rsp) | |
.L46: | |
xorl %r14d, %r14d | |
cmpl $1, %r15d | |
movl %r15d, %eax | |
jle .L41 | |
movl (%rsp), %r12d | |
leal -4(%r15), %r13d | |
.p2align 4,,10 | |
.p2align 3 | |
.L45: | |
xorl %ebp, %ebp | |
cmpl $1, %r12d | |
movl %r12d, %eax | |
movl %r13d, %ebx | |
jle .L43 | |
.p2align 4,,10 | |
.p2align 3 | |
.L54: | |
movl %ebx, %edi | |
xorl %eax, %eax | |
subl $1, %ebx | |
call fibonacci | |
addl %eax, %ebp | |
leal 2(%rbx), %eax | |
cmpl $1, %eax | |
jg .L54 | |
movl $1, %eax | |
.L43: | |
subl $1, %r12d | |
addl %eax, %ebp | |
subl $1, %r13d | |
leal 2(%r12), %eax | |
addl %ebp, %r14d | |
cmpl $1, %eax | |
jg .L45 | |
movl $1, %eax | |
.L41: | |
subl $1, %r15d | |
leal (%r14,%rax), %eax | |
addl %eax, 4(%rsp) | |
leal 2(%r15), %eax | |
subl $1, (%rsp) | |
cmpl $1, %eax | |
jg .L46 | |
movl $1, %eax | |
.L39: | |
addl 4(%rsp), %eax | |
subl $1, 8(%rsp) | |
addl %eax, 36(%rsp) | |
movl 8(%rsp), %eax | |
subl $1, 56(%rsp) | |
addl $2, %eax | |
cmpl $1, %eax | |
jg .L47 | |
movl $1, %eax | |
.L37: | |
addl 36(%rsp), %eax | |
subl $1, 20(%rsp) | |
addl %eax, 60(%rsp) | |
subl $1, 32(%rsp) | |
subl $1, 52(%rsp) | |
jmp .L48 | |
.L35: | |
movl 20(%rsp), %eax | |
addl 60(%rsp), %eax | |
subl $1, 40(%rsp) | |
addl %eax, 64(%rsp) | |
subl $1, 16(%rsp) | |
jmp .L49 | |
.L34: | |
movl 64(%rsp), %eax | |
addl 40(%rsp), %eax | |
subl $1, 44(%rsp) | |
addl %eax, 68(%rsp) | |
subl $1, 24(%rsp) | |
jmp .L50 | |
.L33: | |
movl 44(%rsp), %eax | |
addl 68(%rsp), %eax | |
subl $1, 48(%rsp) | |
addl %eax, 72(%rsp) | |
subl $1, 28(%rsp) | |
jmp .L51 | |
.L32: | |
movl 72(%rsp), %eax | |
subl $1, 12(%rsp) | |
addl 48(%rsp), %eax | |
addl %eax, 76(%rsp) | |
cmpl $-11, 12(%rsp) | |
jne .L52 | |
movl 76(%rsp), %esi | |
movl $.LC0, %edi | |
xorl %eax, %eax | |
addl $1, %esi | |
call printf | |
addq $88, %rsp | |
.cfi_def_cfa_offset 56 | |
xorl %eax, %eax | |
popq %rbx | |
.cfi_def_cfa_offset 48 | |
popq %rbp | |
.cfi_def_cfa_offset 40 | |
popq %r12 | |
.cfi_def_cfa_offset 32 | |
popq %r13 | |
.cfi_def_cfa_offset 24 | |
popq %r14 | |
.cfi_def_cfa_offset 16 | |
popq %r15 | |
.cfi_def_cfa_offset 8 | |
ret | |
.cfi_endproc | |
.LFE12: | |
.size main, .-main | |
.ident "GCC: (GNU) 4.4.6 20110731 (Red Hat 4.4.6-3)" | |
.section .note.GNU-stack,"",@progbits |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment