Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # This test case reproduces a bug where, during register swapping,
- # the code fragments associated with the function need to be swapped
- # together (which may be generated during PGO optimization). If not
- # handled properly, optimized binary execution can result in a segmentation fault.
- # REQUIRES: system-linux
- # RUN: llvm-mc -filetype=obj -triple x86_64-unknown-unknown %s -o %t.o
- # RUN: link_fdata %s %t.o %t.fdata
- # RUN: llvm-strip --strip-unneeded %t.o
- # RUN: %clang -no-pie %t.o -o %t.exe -Wl,-q
- # RUN: llvm-bolt %t.exe -o %t.out -data=%t.fdata --reg-reassign | FileCheck %s
- # RUN: %t.out
- # CHECK: BOLT-INFO: Reg Reassignment Pass Stats
- # CHECK-NEXT: 2 functions affected.
- .text
- .globl main
- .globl main.cold
- .p2align 4, 0x90
- .type main,@function
- .type main.cold,@function
- main.cold:
- bb1:
- cmp $0x3, %r12
- jne bb8
- bb2:
- jmp bb4
- main: # @main
- .cfi_startproc
- # %bb.0: # %entry
- pushq %rax
- pushq %r12
- pushq %rbx
- .cfi_def_cfa_offset 16
- mov $0x1, %r12
- mov $0x2, %rbx
- add $0x1, %r12
- shr $0x14, %r12
- mov $0x3, %r12
- bb3:
- jmp bb1
- bb4:
- cmp $0x3, %r12
- bb5:
- jne bb8
- bb6:
- xorl %eax, %eax
- bb7:
- popq %rcx
- popq %rbx
- popq %r12
- .cfi_def_cfa_offset 8
- retq
- bb8:
- mov $0x1, %rax
- jmp bb7
- # FDATA: 1 main.cold #bb2# 1 main #bb4# 0 100
- # FDATA: 1 main #bb5# 1 main #bb6# 0 100
- # FDATA: 1 main #bb3# 1 main.cold 0 0 100
- .Lfunc_end0:
- .size main, .Lfunc_end0-main
- .cfi_endproc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement