// clang-format off
// REQUIRES: lld, x86

// RUN: %clang_cl --target=x86_64-windows-msvc -Od -Z7 -c /Fo%t.obj -- %s
// RUN: lld-link -debug:full -nodefaultlib -entry:main %t.obj -out:%t.exe -pdb:%t.pdb

// RUN: %lldb -f %t.exe -s %p/Inputs/ast-functions.lldbinit 2>&1 | FileCheck %s

static int static_fn() {
  return 42;
}

int varargs_fn(int x, int y, ...) {
  return x + y;
}

int main(int argc, char **argv) {
  return static_fn() + varargs_fn(argc, argc);
}

// CHECK:      TranslationUnitDecl
// CHECK-NEXT: |-FunctionDecl {{.*}} main 'int (int, char **)'
// CHECK-NEXT: | |-ParmVarDecl {{.*}} argc 'int'
// CHECK-NEXT: | |-ParmVarDecl {{.*}} argv 'char **'
// CHECK-NEXT: | `-AsmLabelAttr {{.*}} Implicit "$__lldb_func::{{.*}}:main"
// CHECK-NEXT: |-FunctionDecl {{.*}} static_fn 'int ()' static
// CHECK-NEXT: | `-AsmLabelAttr {{.*}} Implicit "$__lldb_func::{{.*}}:static_fn"
// CHECK-NEXT: `-FunctionDecl {{.*}} varargs_fn 'int (int, int, ...)'
// CHECK-NEXT:   |-ParmVarDecl {{.*}} x 'int'
// CHECK-NEXT:   |-ParmVarDecl {{.*}} y 'int'
// CHECK-NEXT:   `-AsmLabelAttr {{.*}} Implicit "$__lldb_func::{{.*}}:?varargs_fn@@YAHHHZZ"
