| # REQUIRES: asserts |
| # RUN: llvm-mc -triple=x86_64-apple-macosx10.9 -filetype=obj -o %t %s |
| # RUN: llvm-jitlink -num-threads=0 -debug-only=orc -noexec \ |
| # RUN: -abs _external_func=0x1 -entry=_foo %t 2>&1 \ |
| # RUN: | FileCheck %s |
| # |
| # Check that simplification eliminates dependencies on symbols in this unit, |
| # and correctly propagates dependencies on symbols outside the unit (including |
| # via locally scoped symbols). In this test _baz depends on _foo indirectly via |
| # the local symbol _bar. Initially we expect _baz to depend on _foo, and _foo |
| # on _external_func, after simplification we expect both to depend on |
| # _external_func only. |
| |
| # CHECK: In main emitting {{.*}}_foo{{.*}} |
| # CHECK-NEXT: Initial dependencies: |
| # CHECK-DAG: Symbols: { _foo }, Dependencies: { (main, { _external_func }) } |
| # CHECK-DAG: Symbols: { _baz }, Dependencies: { (main, { _foo }) } |
| # CHECK: Simplified dependencies: |
| # CHECK-DAG: Defs: { (main, [ _baz _foo ]) }, Deps: { (main, [ _external_func ]) } |
| |
| .section __TEXT,__text,regular,pure_instructions |
| |
| .globl _foo |
| .p2align 4, 0x90 |
| _foo: |
| jmp _external_func |
| |
| .p2align 4, 0x90 |
| _bar: |
| |
| jmp _foo |
| |
| .globl _baz |
| .p2align 4, 0x90 |
| _baz: |
| |
| jmp _bar |
| |
| .subsections_via_symbols |