// Test that the always/never instrument lists apply.
// RUN: echo "fun:main" > %tmp-always.txt
// RUN: echo "fun:__xray*" > %tmp-never.txt
// RUN: %clangxx_xray \
// RUN:     -fxray-never-instrument=%tmp-never.txt \
// RUN:     -fxray-always-instrument=%tmp-always.txt \
// RUN:     %s -o %t
// RUN: %llvm_xray extract -symbolize %t | \
// RUN:    FileCheck %s --check-prefix NOINSTR
// RUN: %llvm_xray extract -symbolize %t | \
// RUN:    FileCheck %s --check-prefix ALWAYSINSTR
// REQUIRES: x86_64-target-arch
// REQUIRES: built-in-llvm-tree

// NOINSTR-NOT: {{.*__xray_NeverInstrumented.*}}
int __xray_NeverInstrumented() {
  return 0;
}

// ALWAYSINSTR: {{.*function-name:.*main.*}}
int main(int argc, char *argv[]) {
  return __xray_NeverInstrumented();
}
