        -:    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
unconditional  0 taken 8589934592
        -:   11:
function _Z7uselessv called 0 returned 0% blocks executed 0%
    #####:   12:void useless() {}
    $$$$$:   12-block  0
unconditional  0 never executed
        -:   13:
function _Z12more_uselessv called 0 returned 0% blocks executed 0%
        -:   14:double more_useless() {
    #####:   15:  return 0;
    $$$$$:   15-block  0
unconditional  0 never executed
        -:   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
unconditional  0 taken 2
        -:   21:}
        -:   22:
function _Z3barv called 0 returned 0% blocks executed 0%
        -:   23:int bar() {
    #####:   24:  len--;
    #####:   25:  return foo() + 45;
    $$$$$:   25-block  0
unconditional  0 never executed
        -:   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
unconditional  0 taken 8
        -:   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
unconditional  0 taken 2
        6:   33-block  1
branch  1 taken 4
branch  2 taken 2
        4:   33-block  2
unconditional  3 taken 4
       12:   34:    for (int jj = 0; jj < 2; jj++)
        4:   34-block  0
unconditional  0 taken 4
       12:   34-block  1
branch  1 taken 8
branch  2 taken 4
        8:   34-block  2
unconditional  3 taken 8
       12:   35:      assign(ii, jj);
        8:   35-block  0
unconditional  0 taken 8
        4:   35-block  1
unconditional  1 taken 4
        2:   36:}
        2:   36-block  0
unconditional  0 taken 2
        -:   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 2
branch  1 taken 0
        2:   44:    foo();
        2:   45:    ++a;
        2:   46:  } else {
        2:   46-block  0
unconditional  0 taken 2
    #####:   47:    bar();
    #####:   48:    a += rand();
    $$$$$:   48-block  0
unconditional  0 never executed
        -:   49:  }
        -:   50:
       22:   51:  for (int ii = 0; ii < 10; ++ii) {
        2:   51-block  0
unconditional  0 taken 2
       22:   51-block  1
branch  1 taken 20
branch  2 taken 2
       20:   51-block  2
unconditional  3 taken 20
       20:   52:    switch (rand() % 5) {
       20:   52-block  0
branch  0 taken 4
branch  1 taken 0
branch  2 taken 2
branch  3 taken 6
branch  4 taken 8
        -:   53:      case 0:
        4:   54:        a += rand();
        4:   55:        break;
        4:   55-block  0
unconditional  0 taken 4
        -:   56:      case 1:
        -:   57:      case 2:
        2:   58:        a += rand() / rand();
        2:   59:        break;
        2:   59-block  0
unconditional  0 taken 2
        -:   60:      case 3:
        6:   61:        a -= rand();
        6:   62:        break;
        6:   62-block  0
unconditional  0 taken 6
        -:   63:      default:
        8:   64:        a = -1;
        8:   65:    }
        8:   65-block  0
unconditional  0 taken 8
       20:   66:  }
       20:   66-block  0
unconditional  0 taken 20
        -:   67:
        2:   68:  A thing;
8589934594:   69:  for (uint64_t ii = 0; ii < 4294967296; ++ii)
        2:   69-block  0
unconditional  0 taken 2
8589934594:   69-block  1
branch  1 taken 8589934592
branch  2 taken 2
8589934592:   69-block  2
unconditional  3 taken 8589934592
8589934592:   70:    thing.B();
8589934592:   70-block  0
unconditional  0 taken 8589934592
        -:   71:
        2:   72:  return a + 8 + grid[2][3] + len;
        2:   72-block  0
unconditional  0 taken 2
        -:   73:  return more_useless();
        -:   74:}
