| ; This test verifies whether an outlined function is encoded into the __llvm_outline section |
| ; when the -codegen-data-generate flag is used. |
| |
| ; Verify whether an outlined function is always created, but only encoded into the section when the flag is used. |
| ; RUN: llc -mtriple=arm64-apple-darwin -enable-machine-outliner -codegen-data-generate=true -filetype=obj %s -o %t_save |
| ; RUN: llvm-objdump -d %t_save | FileCheck %s |
| ; RUN: llvm-objdump -h %t_save | FileCheck %s --check-prefix=SECTNAME |
| ; RUN: llc -mtriple=arm64-apple-darwin -enable-machine-outliner -codegen-data-generate=false -filetype=obj %s -o %t_nosave |
| ; RUN: llvm-objdump -d %t_nosave | FileCheck %s |
| ; RUN: llvm-objdump -h %t_nosave | FileCheck %s --check-prefix=NOSECTNAME |
| |
| ; CHECK: _OUTLINED_FUNCTION |
| ; CHECK-NEXT: mov |
| ; CHECK-NEXT: mov |
| ; CHECK-NEXT: b |
| ; SECTNAME: __llvm_outline |
| ; NOSECTNAME-NOT: __llvm_outline |
| |
| ; Verify the content of cgdata after it has been processed with llvm-cgdata. |
| ; RUN: llvm-cgdata --merge %t_save -o %t_cgdata |
| ; RUN: llvm-cgdata --convert %t_cgdata | FileCheck %s --check-prefix=TREE |
| |
| ; TREE: :outlined_hash_tree |
| ; TREE: --- |
| ; TREE-NEXT: 0: |
| ; TREE-NEXT: Hash: 0x0 |
| ; TREE-NEXT: Terminals: 0 |
| ; TREE-NEXT: SuccessorIds: [ 1 ] |
| ; TREE-NEXT: 1: |
| ; TREE-NEXT: Hash: {{.}} |
| ; TREE-NEXT: Terminals: 0 |
| ; TREE-NEXT: SuccessorIds: [ 2 ] |
| ; TREE-NEXT: 2: |
| ; TREE-NEXT: Hash: {{.}} |
| ; TREE-NEXT: Terminals: 0 |
| ; TREE-NEXT: SuccessorIds: [ 3 ] |
| ; TREE-NEXT: 3: |
| ; TREE-NEXT: Hash: {{.}} |
| ; TREE-NEXT: Terminals: 2 |
| ; TREE-NEXT: SuccessorIds: [ ] |
| ; TREE-NEXT: ... |
| |
| declare i32 @g(i32, i32, i32) |
| define i32 @f1() minsize { |
| %1 = call i32 @g(i32 10, i32 1, i32 2); |
| ret i32 %1 |
| } |
| define i32 @f2() minsize { |
| %1 = call i32 @g(i32 20, i32 1, i32 2); |
| ret i32 %1 |
| } |