📄 gcov-7.c
字号:
/* Check that gcov correctly reports line counts, branch percentages, * and call return percentages for functions that call longjmp. *//* { dg-options "-fprofile-arcs -ftest-coverage" } *//* { dg-do run { target native } } */#include <setjmp.h>jmp_buf env;int val;int longjmp_taken;int bar_enter, bar_exit;int foo_enter, foo_exit;void bar (int i){ bar_enter++; /* count(3) */ /* branch(67) */ if (i == 0) { /* branch(end) */ longjmp_taken++; /* count(1) */ longjmp (env, 1); } val += i+1; bar_exit++; /* count(2) */}void foo (int i){ foo_enter++; /* count(3) */ /* branch(67) */ if (i == 1) { /* branch(end) */ longjmp_taken++; /* count(1) */ longjmp (env, 2); } /* returns(50) */ bar (i); /* count(2) */ /* returns(100) */ bar (7); /* count(1) */ /* returns(end) */ val += 16; foo_exit++; /* count(1) */}intpassed (){ return (val == 31 && longjmp_taken == 2 && foo_enter == 3 && foo_exit == 1 && bar_enter == 3 && bar_exit == 2); }voidleave (int i){ if (i == 0) { abort (); } exit (0);}intmain(){ int retval; /* branch(33) */ if ((retval = setjmp (env))) { /* branch(end) */ val += retval; /* count(2) */ } /* returns(33) */ foo (val); /* count(3) */ /* returns(0) */ leave (passed()); /* count(1) */ /* returns(end) */}/* { dg-final { run-gcov -b gcov-7.c } } */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -