@@ -343,6 +343,9 @@ void Analysis::dfsTraverseCFGLoop(long Parent, CFGBlock *FirstBlk) {
343
343
bool Flag = BlkCond.Flag ;
344
344
unsigned ID = Blk->getBlockID ();
345
345
346
+ errs () << " Block: " << ID << " Parent: " << Parent << " \n " ;
347
+ dumpBlkChain ();
348
+
346
349
if (ColorOfBlk[ID] == 0 )
347
350
ColorOfBlk[ID] = 1 ;
348
351
@@ -360,15 +363,15 @@ void Analysis::dfsTraverseCFGLoop(long Parent, CFGBlock *FirstBlk) {
360
363
llvm::sort (SortedPath.begin (), SortedPath.end ());
361
364
// Loop detected
362
365
if (binary_search (SortedPath.begin (), SortedPath.end (), Blk)) {
363
- // errs() << "Loop detected at Block " << Blk->getBlockID() << " in "
364
- // << Signature << "\n";
365
- // unsigned I = 0;
366
- // for (const CFGBlock *Blk : Path) {
367
- // if (I++ > 0)
368
- // errs() << " \033[36m\033[1m->\033[0m ";
369
- // errs() << Blk->getBlockID();
370
- // }
371
- // errs() << "\n";
366
+ errs () << " Loop detected at Block " << Blk->getBlockID () << " in "
367
+ << Signature << " \n " ;
368
+ unsigned I = 0 ;
369
+ for (const CFGBlock *Blk : Path) {
370
+ if (I++ > 0 )
371
+ errs () << " \033 [36m\033 [1m->\033 [0m " ;
372
+ errs () << Blk->getBlockID ();
373
+ }
374
+ errs () << " \n " ;
372
375
bool Traverse = false ;
373
376
for (CFGBlock::AdjacentBlock Adj : Blk->succs ()) {
374
377
if (Adj.isReachable ()) {
@@ -381,6 +384,7 @@ void Analysis::dfsTraverseCFGLoop(long Parent, CFGBlock *FirstBlk) {
381
384
}
382
385
}
383
386
}
387
+ // FIXME: do not clear loop like while (true)
384
388
if (!Traverse) {
385
389
unsigned PathSize = Path.size ();
386
390
for (unsigned I = PathSize - 1 ; I > 0 ; --I) {
0 commit comments