        -:    0:Source:test.cpp
        -:    0:Graph:test.gcno
        -:    0:Data:test.gcda
        -:    0:Runs:2
        -:    0:Programs:1
        -:    1:#include "test.h"
        -:    2:#include <cstdlib>
        -:    3:
        -:    4:bool on = false;
        -:    5:int len = 42;
        -:    6:double grid[10][10] = {0};
        -:    7:const char * hello = "world";
        -:    8:const char * world = "hello";
        -:    9:
function _ZN1A1BEv called 8589934592 returned 100% blocks executed 100%
8589934592:   10:void A::B() {}
8589934592:   10-block  0
        -:   11:
function _Z7uselessv called 0 returned 0% blocks executed 0%
    #####:   12:void useless() {}
    $$$$$:   12-block  0
        -:   13:
function _Z12more_uselessv called 0 returned 0% blocks executed 0%
        -:   14:double more_useless() {
    #####:   15:  return 0;
    $$$$$:   15-block  0
        -:   16:}
        -:   17:
function _Z3foov called 2 returned 100% blocks executed 100%
        -:   18:int foo() {
        2:   19:  on = true;
        2:   20:  return 3;
        2:   20-block  0
        -:   21:}
        -:   22:
function _Z3barv called 0 returned 0% blocks executed 0%
        -:   23:int bar() {
    #####:   24:  len--;
    #####:   25:  return foo() + 45;
    $$$$$:   25-block  0
        -:   26:}
        -:   27:
function _Z6assignii called 8 returned 100% blocks executed 100%
        8:   28:void assign(int ii, int jj) {
        8:   29:  grid[ii][jj] = (ii+1) * (jj+1);
        8:   30:}
        8:   30-block  0
        -:   31:
function _Z15initialize_gridv called 2 returned 100% blocks executed 100%
        -:   32:void initialize_grid() {
        6:   33:  for (int ii = 0; ii < 2; ii++)
        2:   33-block  0
        6:   33-block  1
branch  0 taken 67%
branch  1 taken 33%
        4:   33-block  2
       12:   34:    for (int jj = 0; jj < 2; jj++)
        4:   34-block  0
       12:   34-block  1
branch  0 taken 67%
branch  1 taken 33%
        8:   34-block  2
       12:   35:      assign(ii, jj);
        8:   35-block  0
        4:   35-block  1
        2:   36:}
        2:   36-block  0
        -:   37:
function main called 2 returned 100% blocks executed 94%
        -:   38:int main() {
        2:   39:  initialize_grid();
        -:   40:
        2:   41:  int a = 2;
        2:   42:  on = rand() % 2;
        2:   43:  if (on) {
        2:   43-block  0
branch  0 taken 100%
branch  1 taken 0%
        2:   44:    foo();
        2:   45:    ++a;
        2:   46:  } else {
        2:   46-block  0
    #####:   47:    bar();
    #####:   48:    a += rand();
    $$$$$:   48-block  0
        -:   49:  }
        -:   50:
       22:   51:  for (int ii = 0; ii < 10; ++ii) {
        2:   51-block  0
       22:   51-block  1
branch  0 taken 91%
branch  1 taken 9%
       20:   51-block  2
       20:   52:    switch (rand() % 5) {
       20:   52-block  0
branch  0 taken 20%
branch  1 taken 0%
branch  2 taken 10%
branch  3 taken 30%
branch  4 taken 40%
        -:   53:      case 0:
        4:   54:        a += rand();
        4:   55:        break;
        4:   55-block  0
        -:   56:      case 1:
        -:   57:      case 2:
        2:   58:        a += rand() / rand();
        2:   59:        break;
        2:   59-block  0
        -:   60:      case 3:
        6:   61:        a -= rand();
        6:   62:        break;
        6:   62-block  0
        -:   63:      default:
        8:   64:        a = -1;
        8:   65:    }
        8:   65-block  0
       20:   66:  }
       20:   66-block  0
        -:   67:
        2:   68:  A thing;
8589934594:   69:  for (uint64_t ii = 0; ii < 4294967296; ++ii)
        2:   69-block  0
8589934594:   69-block  1
branch  0 taken 99%
branch  1 taken 1%
8589934592:   69-block  2
8589934592:   70:    thing.B();
8589934592:   70-block  0
        -:   71:
        2:   72:  return a + 8 + grid[2][3] + len;
        2:   72-block  0
        -:   73:  return more_useless();
        -:   74:}
