#define GCOV_ARC_ON_TREE (1 << 0)
#define GCOV_ARC_FAKE (1 << 1)
#define GCOV_ARC_FALLTHROUGH (1 << 2)
+#define GCOV_ARC_TRUE (1 << 3)
+#define GCOV_ARC_FALSE (1 << 4)
/* Object & program summary record. */
/* Loop making arc. */
unsigned int cycle : 1;
+ /* Is a true arc. */
+ unsigned int true_value : 1;
+
+ /* Is a false arc. */
+ unsigned int false_value : 1;
+
/* Links to next arc on src and dst lists. */
struct arc_info *succ_next;
struct arc_info *pred_next;
arc->on_tree = !!(flags & GCOV_ARC_ON_TREE);
arc->fake = !!(flags & GCOV_ARC_FAKE);
arc->fall_through = !!(flags & GCOV_ARC_FALLTHROUGH);
+ arc->true_value = !!(flags & GCOV_ARC_TRUE);
+ arc->false_value = !!(flags & GCOV_ARC_FALSE);
arc->succ_next = src_blk->succ;
src_blk->succ = arc;
flag_bits |= GCOV_ARC_FAKE;
if (e->flags & EDGE_FALLTHRU)
flag_bits |= GCOV_ARC_FALLTHROUGH;
+ if (e->flags & EDGE_TRUE_VALUE)
+ flag_bits |= GCOV_ARC_TRUE;
+ if (e->flags & EDGE_FALSE_VALUE)
+ flag_bits |= GCOV_ARC_FALSE;
/* On trees we don't have fallthru flags, but we can
recompute them from CFG shape. */
if (e->flags & (EDGE_TRUE_VALUE | EDGE_FALSE_VALUE)