// clang-format off
// REQUIRES: target-windows

// RUN: %build -o %t.exe -- %s
// RUN: %lldb -f %t.exe -s \
// RUN:     %p/Inputs/inline_sites_live.lldbinit 2>&1 | FileCheck %s

void use(int) {}

void __attribute__((always_inline)) bar(int param) {
  use(param); // BP_bar
}

void __attribute__((always_inline)) foo(int param) {
  int local = param+1;
  bar(local);
  use(param);
  use(local); // BP_foo
}

int main(int argc, char** argv) {
  foo(argc);
}

// CHECK:      * thread #1, {{.*}}stop reason = breakpoint 1
// CHECK-NEXT:    frame #0: {{.*}}`main [inlined] bar(param=2)
// CHECK:      (lldb) expression param
// CHECK-NEXT: (int) $0 = 2
// CHECK:      * thread #1, {{.*}}stop reason = breakpoint 2
// CHECK-NEXT:    frame #0: {{.*}}`main [inlined] foo(param=1)
// CHECK:      (lldb) expression param
// CHECK-NEXT: (int) $1 = 1
// CHECK-NEXT: (lldb) expression local
// CHECK-NEXT: (int) $2 = 2
