# Test that lldb is able to unwind out of a function which is in between two
# parts of a split function. This tests a specific bug where lldb would not find
# unwind info for the "inner" function if it encountered if after the split
# function. The presence of debug info is important for this test.

# REQUIRES: system-linux, native
# REQUIRES: target-x86_64

# RUN: %clang_host %S/Inputs/basic-block-sections-with-dwarf.s -o %t
# RUN: %lldb %t -s %s -o exit | FileCheck %s

breakpoint set -n baz
# CHECK: Breakpoint 1: where = {{.*}}`baz

process launch
# CHECK: stop reason = breakpoint 1

thread backtrace
# CHECK: frame #0: {{.*}}`baz
# CHECK: frame #1: {{.*}}`foo(flag=0)
# CHECK: frame #2: {{.*}}`bar
# CHECK: frame #3: {{.*}}`foo(flag=1)
# CHECK: frame #4: {{.*}}`main
