/// https://bugs.llvm.org/show_bug.cgi?id=38067
/// An abnormal exit does not clear execution counts of subsequent instructions.
// RUN: mkdir -p %t.dir && cd %t.dir
// RUN: %clang --coverage %s -o %t
// RUN: test -f gcov-__gcov_flush-terminate.gcno

// RUN: rm -f gcov-__gcov_flush-terminate.gcda && %expect_crash %run %t
// RUN: llvm-cov gcov -t gcov-__gcov_flush-terminate.gcda | FileCheck %s

// CHECK:             -:    0:Runs:1
// CHECK-NEXT:        -:    0:Programs:1

void __gcov_flush(void);

int main(void) {                   // CHECK:      1: [[#@LINE]]:int main(void)
  int i = 22;                      // CHECK-NEXT: 1: [[#@LINE]]:
  __gcov_flush();                  // CHECK-NEXT: 1: [[#@LINE]]:
  i = 42;                          // CHECK-NEXT: 1: [[#@LINE]]:
  __builtin_trap();                // CHECK-NEXT: 1: [[#@LINE]]:
  i = 84;                          // CHECK-NEXT: 1: [[#@LINE]]:
  return 0;                        // CHECK-NEXT: 1: [[#@LINE]]:
}
