Fix bug 327238.
assertion failure in Callgrind: bbcc.c:585 (vgCallgrind_setup_bbcc):
Assertion 'passed <= last_bb->cjmp_count' failed
Background:
We want to detect the jump behavior of code, that is, the side exit
from a SB, as there can be many. For that, instrumented code writes
the exit number into a global variable (jmps_passed) before an eventual
exit.
With an exception happening in the first few instructions of an SB,
jmps_passed never was written, and still contained an old value. This
got saved/restored around the exception handler, and resulted in the
failed assertion.
Solution: always initialize jmps_passed to zero in setup_bbcc(), which
is called at the beginning of every SB.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13712 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/callgrind/global.h b/callgrind/global.h
index d764e16..9f7aae7 100644
--- a/callgrind/global.h
+++ b/callgrind/global.h
@@ -523,7 +523,8 @@
Bool collect;
Context* cxt;
- Int jmps_passed; /* number of conditional jumps passed in last BB */
+ /* number of conditional jumps passed in last BB */
+ Int jmps_passed;
BBCC* bbcc; /* last BB executed */
BBCC* nonskipped;