| ## A larger branch relaxation test that requires multiple relaxation steps. |
| # RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t |
| # RUN: llvm-objdump -d %t | FileCheck %s |
| |
| ## Regression test that we use jump short instead of jump near |
| ## (see the reverted be5a845e4c29aadb513ae6e5e2879dccf37efdbb). |
| # CHECK: 4a9: eb 00 jmp 0x4ab |
| # CHECK: 5a3: eb 00 jmp 0x5a5 |
| # CHECK-NEXT: 5a5: eb 00 jmp 0x5a7 |
| # CHECK-NEXT: 5a7: eb 00 jmp 0x5a9 |
| # CHECK-NEXT: 5a9: eb 00 jmp 0x5ab |
| # CHECK-NEXT: 5ab: e9 fb fe ff ff jmp 0x4ab |
| # CHECK-NEXT: 5b0: eb 00 jmp 0x5b2 |
| |
| pushq %rbp |
| movq %rsp, %rbp |
| movq %rcx, (%rbp) |
| movq %r8, (%rbp) |
| movl $0, (%rbp) |
| movl $0, (%rbp) |
| movl $0, (%rbp) |
| cmpq $0, (%rbp) |
| je .LBB0_2 |
| movl $0, (%rbp) |
| jmp .LBB0_30 |
| .LBB0_2: |
| jmp .LBB0_3 |
| .LBB0_3: |
| movq (%rbp), %rax |
| movsbl (%rax), %ecx |
| xorl %eax, %eax |
| cmpl %ecx, %eax |
| jne .LBB0_29 |
| jmp .LBB0_5 |
| .LBB0_5: |
| movb $0, %al |
| callq sqlite3_stepPLT |
| movl %eax, (%rbp) |
| cmpq $0, (%rbp) |
| je .LBB0_23 |
| movl $100, %eax |
| cmpl (%rbp), %eax |
| sete %al |
| andb $1, %al |
| movzbl %al, %eax |
| cmpl (%rbp), %eax |
| jne .LBB0_23 |
| cmpl $0, (%rbp) |
| je .LBB0_23 |
| movq (%rbp), %rax |
| movl (%rax), %eax |
| andl $256, %eax |
| cmpl $0, %eax |
| je .LBB0_23 |
| cmpl $0, (%rbp) |
| je .LBB0_22 |
| movl $0, (%rbp) |
| .LBB0_11: |
| cmpl $0, (%rbp) |
| je .LBB0_13 |
| movl (%rbp), %esi |
| xorl %edi, %edi |
| movb $0, %al |
| callq sqlite3_free_tablePLT |
| jmp .LBB0_11 |
| .LBB0_13: |
| movq (%rbp), %rax |
| movslq (%rbp), %rcx |
| cmpb $0, (%rax,%rcx) |
| je .LBB0_15 |
| movq (%rbp), %rax |
| movb $1, 8(%rax) |
| .LBB0_15: |
| movq (%rbp), %rax |
| movslq (%rbp), %rcx |
| addq %rcx, %rax |
| movq %rax, (%rip) |
| movl $0, (%rbp) |
| .LBB0_16: |
| movl (%rbp), %eax |
| cmpl (%rbp), %eax |
| jge .LBB0_21 |
| movl $0, (%rbp) |
| movl $0, (%rbp) |
| movq (%rbp), %rdi |
| movb $0, %al |
| callq sqlite3_free_tablePLT |
| movq (%rip), %rax |
| movslq (%rbp), %rcx |
| movl $5, %edx |
| cmpq %rdx, (%rax,%rcx,) |
| je .LBB0_19 |
| movq (%rbp), %rax |
| movb $1, 8(%rax) |
| jmp .LBB0_30 |
| .LBB0_19: |
| jmp .LBB0_20 |
| .LBB0_20: |
| movl (%rbp), %eax |
| addl $1, %eax |
| movl %eax, (%rbp) |
| jmp .LBB0_16 |
| .LBB0_21: |
| jmp .LBB0_22 |
| .LBB0_22: |
| jmp .LBB0_23 |
| .LBB0_23: |
| cmpl $0, (%rbp) |
| je .LBB0_27 |
| movb $0, %al |
| callq sqlite3_stepPLT |
| movl %eax, (%rbp) |
| movl $0, (%rbp) |
| cmpl $0, (%rbp) |
| je .LBB0_26 |
| jmp .LBB0_28 |
| .LBB0_26: |
| jmp .LBB0_27 |
| .LBB0_27: |
| jmp .LBB0_5 |
| .LBB0_28: |
| jmp .LBB0_3 |
| .LBB0_29: |
| jmp .LBB0_30 |
| .LBB0_30: |
| movl (%rbp), %eax |
| addq $96, %rsp |
| popq %rbp |
| retq |
| .p2align 4, 0x90 |
| movq %rsp, %rbp |
| subq $48, %rsp |
| movq %rdi, (%rbp) |
| movl %esi, (%rbp) |
| movl %edx, (%rbp) |
| cmpq $0, sqlite3_get_table_res_00 |
| movq (%rbp), %rax |
| jmp .LBB1_8 |
| movq $0, (%rbp) |
| movq (%rbp), %rdi |
| leaq sqlite3_get_table_zSql0, %rsi |
| leaq sqlite3_get_table_cb0, %rdx |
| leaq sqlite3_get_table_res0, %rcx |
| leaq (%rip), %r8 |
| callq sqlite3_exec |
| movl %eax, (%rip) |
| movslq (%rbp), %rax |
| movq %rax, (%rbp) |
| movl (%rip), %eax |
| andl $5, %eax |
| cmpl $0, %eax |
| je .LBB1_4 |
| movl (%rip), %ecx |
| movq (%rbp), %rax |
| movl %ecx, (%rax) |
| movl (rip), %eax |
| movl %eax, (%rbp) |
| jmp .LBB1_8 |
| .LBB1_4: |
| movsbl (%rip), %edi |
| movb $0, %al |
| callq sqlite3_free_tablePLT |
| cmpl $0, (%rip) |
| je .LBB1_6 |
| movq (%rip), %rax |
| movsbl (%rax), %edi |
| movb $0, %al |
| callq sqlite3_free_tablePLT |
| .LBB1_6: |
| movq (rip), %rdi |
| movslq (%rbp), %rsi |
| shlq $0, %rsi |
| addq $1, %rsi |
| movb $0, %al |
| callq sqlite3_mallocPLT |
| movq %rax, (%rbp) |
| cmpq $0, (%rbp) |
| je .LBB1_8 |
| movl $1, (%rbp) |
| .LBB1_8: |
| movl (%rbp), %eax |
| addq $48, %rsp |
| .p2align 4, 0x90 |
| movq (%rbp), %rax |
| movl 28(%rax), %eax |
| movq (%rbp), %rcx |
| addl 16(%rcx), %eax |
| cmpl $0, %eax |
| movq (%rbp), %rax |
| movl 16(%rax), %ecx |
| addl (%rbp), %ecx |
| addl $1, %ecx |
| movq (%rbp), %rax |
| movl %ecx, 16(%rax) |
| jmp .LBB2_14 |
| movq (%rbp), %rax |
| cmpl $0, 20(%rax) |
| je .LBB2_10 |
| movl $0, (%rbp) |
| movq (%rbp), %rax |
| movl $0, 24(%rax) |
| .LBB2_4: |
| movl (%rbp), %eax |
| cmpl (%rbp), %eax |
| jge .LBB2_7 |
| movq (%rbp), %rax |
| movslq (%rbp), %rcx |
| movsbl (%rax,%rcx), %esi |
| leaq .str, %rdi |
| movb $0, %al |
| callq sqlite3_mprintf@PLT |
| movq %rax, -64(%rbp) |
| movl -56(%rbp), %eax |
| addl $1, %eax |
| movl %eax, -56(%rbp) |
| jmp .LBB2_4 |
| .LBB2_7: |
| cmpq $0, -64(%rbp) |
| je .LBB2_9 |
| jmp .LBB2_9 |
| .LBB2_9: |
| movq -64(%rbp), %rdx |
| movq -48(%rbp), %rax |
| movq (%rax), %rax |
| movq -48(%rbp), %rsi |
| movl 28(%rsi), %ecx |
| movl %ecx, %edi |
| addl $1, %edi |
| movl %edi, 28(%rsi) |
| movslq %ecx, %rcx |
| movq %rdx, (%rax,%rcx,8) |
| jmp .LBB2_13 |
| .LBB2_10: |
| movq -48(%rbp), %rax |
| movslq -20(%rbp), %rcx |
| cmpq %rcx, %rax |
| je .LBB2_12 |
| movq -48(%rbp), %rax |
| movq 8(%rax), %rdi |
| movb $0, %al |
| callq sqlite3_free_table@PLT |
| leaq .L.str, %rdi |
| movb $0, %al |
| callq sqlite3_mprintf@PLT |
| movq %rax, %rcx |
| movq -48(%rbp), %rax |
| movq %rcx, 8(%rax) |
| movq -48(%rbp), %rax |
| movl $1, 32(%rax) |
| movl $1, -4(%rbp) |
| jmp .LBB2_15 |
| .LBB2_12: |
| jmp .LBB2_13 |
| .LBB2_13: |
| movl $0, -4(%rbp) |
| jmp .LBB2_15 |
| .LBB2_14: |
| .LBB2_15: |
| movl -4(%rbp), %eax |
| addq $64, %rsp |
| popq %rbp |
| .p2align 4, 0x90 |
| sqlite3_complete: |
| je .LBB3_54 |
| je .LBB3_25 |
| je .LBB3_25 |
| je .LBB3_25 |
| jmp .LBB3_28 |
| movl $42, %eax |
| cmpq %rax, -160 |
| je .LBB3_5 |
| jmp .LBB3_53 |
| .LBB3_5: |
| jmp .LBB3_6 |
| .LBB3_6: |
| movq -160, %rax |
| movsbl 0, %ecx |
| xorl %eax, %eax |
| movb $1, %al |
| movl $42, %ecx |
| cmpq %rcx, -160 |
| movb %al, -340 |
| jne .LBB3_9 |
| movq -160, %rax |
| movsbl 10, %eax |
| cmpl $0, %eax |
| setne %al |
| movb %al, -340 |
| .LBB3_9: |
| movb -340, %al |
| movb %al, -330 |
| movb -330, %al |
| testb $1, %al |
| jne .LBB3_11 |
| jmp .LBB3_14 |
| .LBB3_11: |
| movq -160, %rax |
| movsbl 0, %eax |
| cmpl $0, %eax |
| jne .LBB3_13 |
| movl $0, -40 |
| jmp .LBB3_54 |
| .LBB3_13: |
| jmp .LBB3_6 |
| .LBB3_14: |
| jmp .LBB3_53 |
| movq -160, %rax |
| movsbl 10, %eax |
| cmpl $45, %eax |
| je .LBB3_17 |
| movb $2, -170 |
| jmp .LBB3_53 |
| .LBB3_17: |
| jmp .LBB3_18 |
| .LBB3_18: |
| movq -160, %rax |
| movsbl 0, %ecx |
| xorl %eax, %eax |
| cmpl $0, %ecx |
| movb %al, -350 |
| jmp .LBB3_53 |
| .LBB3_25: |
| movl $0, -40 |
| jmp .LBB3_54 |
| jmp .LBB3_53 |
| .LBB3_28: |
| je .LBB3_52 |
| jmp .LBB3_52 |
| jmp .LBB3_31 |
| .LBB3_31: |
| movq -160, %rax |
| movslq -280, %rcx |
| movsbl 0, %ecx |
| movb -360, %al |
| andb $1, %cl |
| movzbl %cl, %ecx |
| movl %ecx, -240 |
| testb $1, %al |
| jne .LBB3_36 |
| jmp .LBB3_51 |
| .LBB3_36: |
| movq -160, %rax |
| movsbl 0, %eax |
| orl $32, %eax |
| cmpl $0, -280 |
| je .LBB3_40 |
| movq -160, %rdi |
| leaq .L.str, %rsi |
| movl $7, %edx |
| movb $0, %al |
| callq sqlite3StrNICmp@PLT |
| cmpl $0, %eax |
| je .LBB3_40 |
| jmp .LBB3_48 |
| .LBB3_40: |
| cmpl $0, -280 |
| je .LBB3_43 |
| movq -160, %rdi |
| leaq .L.str, %rsi |
| movl $4, %edx |
| movb $0, %al |
| callq sqlite3StrNICmp@PLT |
| cmpl $0, %eax |
| je .LBB3_43 |
| movb $5, -170 |
| jmp .LBB3_47 |
| .LBB3_43: |
| cmpl $0, -280 |
| je .LBB3_46 |
| movq -160, %rdi |
| leaq .L.str, %rsi |
| movl $9, %edx |
| movb $0, %al |
| callq sqlite3StrNICmp@PLT |
| cmpl $0, %eax |
| je .LBB3_46 |
| movl -280, %ecx |
| subl $1, %ecx |
| movq -160, %rax |
| movslq %ecx, %rcx |
| addq %rcx, %rax |
| movq %rax, -160 |
| .LBB3_46: |
| jmp .LBB3_47 |
| .LBB3_47: |
| jmp .LBB3_48 |
| .LBB3_48: |
| jmp .LBB3_49 |
| .LBB3_49: |
| jmp .LBB3_50 |
| .LBB3_50: |
| jmp .LBB3_31 |
| .LBB3_51: |
| jmp .LBB3_52 |
| .LBB3_52: |
| .LBB3_53: |
| .LBB3_54: |
| .L.str: |