http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53695

--- Comment #7 from Steven Bosscher <steven at gcc dot gnu.org> 2012-08-22 
20:13:32 UTC ---
Before tracer we have this CFG:

   ENTRY
     |
     V
     |
    2(0)
     |
     |
     V
     |    (a)
     |   +-<-+
     V  /    |   
     | /     /   (a)
     3(1)->-4(1)-->--5(1)-+
           /\             |
          /  +-----<------+
         /
        |
        V(a)
        |
       6(0)
        |
       EXIT

and (BASIC_BLOCK(3)->flags & IRREDUCIBLE_LOOP) is true. The IRREDUCIBLE_LOOP
flags appear to be out-of-date because the flag is not set on BASIC_BLOCK(4)
but it's set on all edges out of it so that's good enough.

Tracer goes to work on this and finds the following traces:

Trace seed 4 [10000],4 [10000],3 [6667] forward 2 [6667],3 [6667],4 [10000]
Duplicated 3 as 7 [6667]
 covered now 66.7

Trace seed 6 [3333] forward 6 [3333]
 covered now 100.0

The resulting flow graph was already shown in comment #6, but now with the
basic block numbers before the CFG is cleaned up:

   ENTRY
     |
     V
     |
    2(0)
     |
     |
     V
     |
    7(0)
     |
     \
      \
       \
        \
         \
          \
+-->--+   |   +--<---+
|      \  V  /       |
|       \ | /        |
+-3(1)-<-4(1)->-5(1)-+
      (a) |  (a)
          |
          |(a)
          |
         6(0)
          |
         EXIT

Reply via email to