## 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: