# Test of the llmv-dwarfdump --statistics newly added stats (version >= 3).
#
RUN: llvm-mc -triple x86_64-unknown-linux-gnu %S/Inputs/statistics-fib.s -filetype=obj -o %t-statistics-fib.o
RUN: llvm-dwarfdump --statistics %t-statistics-fib.o | FileCheck %s

# Source program - A version of Fibonacci
# Compilation options:  -g -O3 -c
#
# int
# real_fib (int x, int answers[11])
# {
#   int result;
# 
#   if ((answers)[x] != -1)
#     return (answers)[x];
# 
#   result = real_fib(x-1, answers) + real_fib(x-2, answers);
#   (answers)[x] = result;
# 
#   return result;
# }
# 
# int
# fib (int x)
# {
#   int answers[11];
#   int i;
# 
#   if (x > 10)
#     return -1;
# 
#   for (i = 0; i < 11; i++)
#     answers[i] = -1;
# 
#   answers[0] = 0;
#   answers[1] = 1;
#   answers[2] = 1;
# 
#   return real_fib(x, answers);
# }
# 
# int main (int argc, char **argv)
# {
#   int result;
# 
#   result = fib(3);
#   printf ("fibonacci(3) = %d\n", result);
#   result = fib(4);
#   printf ("fibonacci(4) = %d\n", result);
#   result = fib(5);
#   printf ("fibonacci(5) = %d\n", result);
#   result = fib(6);
#   printf ("fibonacci(6) = %d\n", result);
#   result = fib(7);
#   printf ("fibonacci(7) = %d\n", result);
#   result = fib(8);
#   printf ("fibonacci(8) = %d\n", result);
#   result = fib(9);
#   printf ("fibonacci(9) = %d\n", result);
#   result = fib(10);
#   printf ("fibonacci(10) = %d\n", result);
# 
#   return 0;
# }
#

CHECK:      "version": 9,
CHECK:      "#functions": 3,
CHECK:      "#functions with location": 3,
CHECK:      "#inlined functions": 8,
CHECK:      "#inlined functions with abstract origins": 8,
CHECK:      "#unique source variables": 9,
CHECK:      "#source variables": 33,

# Ideally the value below would be 33 but currently it's not.
CHECK:      "#source variables with location": 24,
CHECK:      "#call site entries": 8,
CHECK:      "sum_all_variables(#bytes in parent scope)": 3072,
CHECK:      "sum_all_variables(#bytes in parent scope covered by DW_AT_location)": 1188,
CHECK:      "#bytes within functions": 636,
CHECK:      "#bytes within inlined functions": 388,
CHECK:      "#params": 13,
CHECK-NEXT: "#params with source location": 13,
CHECK-NEXT: "#params with type": 13,
CHECK-NEXT: "#params with binary location": 13,
CHECK-NEXT: "#local vars": 20,
CHECK-NEXT: "#local vars with source location": 20,
CHECK-NEXT: "#local vars with type": 20,

# Ideally the value below would be 20, but currently it's not.
CHECK-NEXT: "#local vars with binary location": 11,
