URL
                    https://opencores.org/ocsvn/openrisc/openrisc/trunk
                
            Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [g++.dg/] [gcov/] [gcov-1.C] - Rev 709
Go to most recent revision | Compare with Previous | Blame | View Log
/* Check that execution counts and branch probabilities for various Cconstructs are reported correctly by gcov. *//* { dg-options "-fprofile-arcs -ftest-coverage" } *//* { dg-do run { target native } } */extern "C" void abort (void);int do_something (int i){return i;}/* Check static inline functions. */int unref_val;static inline intunreferenced (int i, int j){return i - j;}static inline intuncalled (int i, int j){return i * j;}static inline intcalled (int i, int j){return i + j; /* count(1) */}voidcall_unref (){if (unref_val) /* count(1) */unref_val = uncalled (1, 2);unref_val = called (unref_val, 4); /* count(1) */}/* Check for loops. */int for_val1;int for_val2;int for_temp;inttest_for1 (int n){int i;for_temp = 1; /* count(3) */for (i = 0; i < n; i++) /* branch(25) *//* branch(end) */for_temp++; /* count(9) */return for_temp; /* count(3) */}inttest_for2 (int m, int n, int o){int i, j, k;for_temp = 1; /* count(6) */for (i = 0; i < n; i++) /* branch(30) *//* branch(end) */for (j = 0; j < m; j++) /* branch(32) *//* branch(end) */for (k = 0; k < o; k++) /* branch(27) *//* branch(end) */for_temp++; /* count(81) */return for_temp; /* count(6) */}intcall_for (){for_val1 += test_for1 (0);for_val1 += test_for1 (2);for_val1 += test_for1 (7);for_val2 += test_for2 (0, 0, 0);for_val2 += test_for2 (1, 0, 0);for_val2 += test_for2 (1, 3, 0);for_val2 += test_for2 (1, 3, 1);for_val2 += test_for2 (3, 1, 5);for_val2 += test_for2 (3, 7, 3);}/* Check the use of goto. */int goto_val;inttest_goto1 (int f){/* branch(50) */if (f) /* count(2) *//* branch(end) */goto lab1; /* count(1) */return 1; /* count(1) */lab1:return 2; /* count(1) */}inttest_goto2 (int f){int i;/* branch(7) */for (i = 0; i < 10; i++) /* count(15) *//* branch(end) */if (i == f) goto lab2; /* count(14) */return 4; /* count(1) */lab2:return 8; /* count(1) */}voidcall_goto (){goto_val += test_goto1 (0);goto_val += test_goto1 (1);goto_val += test_goto2 (3);goto_val += test_goto2 (30);}/* Check nested if-then-else statements. */int ifelse_val1;int ifelse_val2;int ifelse_val3;inttest_ifelse1 (int i, int j){int result = 0;/* branch(40) */if (i) /* count(5) *//* branch(0) */if (j) /* count(3) *//* branch(end) */result = do_something (4); /* count(3) */elseresult = do_something (1024);else/* branch(50) */if (j) /* count(2) *//* branch(end) */result = do_something (1); /* count(1) */elseresult = do_something (2); /* count(1) *//* branch(80) */if (i > j) /* count(5) *//* branch(end) */result = do_something (result*2); /* count(1) *//* branch(80) */if (i > 10) /* count(5) *//* branch(100) */if (j > 10) /* count(1) *//* branch(end) */result = do_something (result*4); /* count(1) */return result; /* count(5) */}inttest_ifelse2 (int i){int result = 0;/* branch(83) */if (!i) /* count(6) *//* branch(end) */result = do_something (1); /* count(1) *//* branch(100) */if (i == 1) /* count(6) *//* branch(end) */result = do_something (1024);/* branch(50) */if (i == 2) /* count(6) *//* branch(end) */result = do_something (2); /* count(3) *//* branch(67) */if (i == 3) /* count(6) *//* branch(end) */return do_something (8); /* count(2) *//* branch(100) */if (i == 4) /* count(4) *//* branch(end) */return do_something (2048);return result; /* count(4) */}inttest_ifelse3 (int i, int j){int result = 1;/* branch(27 50 75) */if (i > 10 && j > i && j < 20) /* count(11) *//* branch(end) */result = do_something (16); /* count(1) *//* branch(55) */if (i > 20) /* count(11) *//* branch(60) */if (j > i) /* count(5) *//* branch(50) */if (j < 30) /* count(2) *//* branch(end) */result = do_something (32); /* count(1) *//* branch(9 10 89) */if (i == 3 || j == 47 || i == j) /* count(11) *//* branch(end) */result = do_something (64); /* count(3) */return result; /* count(11) */}voidcall_ifelse (){ifelse_val1 += test_ifelse1 (0, 2);ifelse_val1 += test_ifelse1 (0, 0);ifelse_val1 += test_ifelse1 (1, 2);ifelse_val1 += test_ifelse1 (10, 2);ifelse_val1 += test_ifelse1 (11, 11);ifelse_val2 += test_ifelse2 (0);ifelse_val2 += test_ifelse2 (2);ifelse_val2 += test_ifelse2 (2);ifelse_val2 += test_ifelse2 (2);ifelse_val2 += test_ifelse2 (3);ifelse_val2 += test_ifelse2 (3);ifelse_val3 += test_ifelse3 (11, 19);ifelse_val3 += test_ifelse3 (25, 27);ifelse_val3 += test_ifelse3 (11, 22);ifelse_val3 += test_ifelse3 (11, 10);ifelse_val3 += test_ifelse3 (21, 32);ifelse_val3 += test_ifelse3 (21, 20);ifelse_val3 += test_ifelse3 (1, 2);ifelse_val3 += test_ifelse3 (32, 31);ifelse_val3 += test_ifelse3 (3, 0);ifelse_val3 += test_ifelse3 (0, 47);ifelse_val3 += test_ifelse3 (65, 65);}/* Check switch statements. */int switch_val, switch_m;inttest_switch (int i, int j){int result = 0; /* count(5) *//* branch(20 0 60 20) */switch (i) /* count(5) *//* branch(end) */{case 1:result = do_something (2); /* count(1) */break;case 2:result = do_something (1024);break;case 3:case 4:/* branch(67) */if (j == 2) /* count(3) *//* branch(end) */return do_something (4); /* count(1) */result = do_something (8); /* count(2) */break;default:result = do_something (32); /* count(1) */switch_m++; /* count(1) */break;}return result; /* count(4) */}voidcall_switch (){switch_val += test_switch (1, 0);switch_val += test_switch (3, 0);switch_val += test_switch (3, 2);switch_val += test_switch (4, 0);switch_val += test_switch (16, 0);switch_val += switch_m;}intmain(){call_for ();call_goto ();call_ifelse ();call_switch ();call_unref ();if ((for_val1 != 12)|| (for_val2 != 87)|| (goto_val != 15)|| (ifelse_val1 != 31)|| (ifelse_val2 != 23)|| (ifelse_val3 != 246)|| (switch_val != 55)|| (unref_val != 4))abort ();return 0;}/* { dg-final { run-gcov branches { -b gcov-1.C } } } */
Go to most recent revision | Compare with Previous | Blame | View Log
