try tp deduplicate PCs
use a ranged for loop; sorting the vector didn't seem like an improvement
unless I'm missing something...
add option to echo the checked replacement
Merge pull request #73 from regehr/souper-check-print

add option to echo the checked replacement
Merge pull request #71 from regehr/pc-dedup

deduplicate PCs
Fix build
A fix to issue 26

The idea is that when we build an instruction, if the instruction is a
phi-node with multiple incoming edges, we do DFS from the basic block
containing the phi-node and check if we will revisit the basic block.
If yes, we know that this phi-node is the merge point of loop iterations.
all basic blocks along the path of the detected loop are cached for
speeding up future queries.
added a test related to issue 26

This test caused the infinite recursion behavior described in issue 26
Fixed a problem for sub-loops

When we do dfs from a phi, it's possible that we will encounter
other loops that not start from the phi we started with.
add some tests
Fixed a test
Looks work now

* Fixed a stupid DFS issue
* caching subloops, which may result in better performance
correct-ize the caching logic
added a couple of comments
Address Peter's review feedback

* don't cache basic blocks in natural sub-loops
* rename dfs to a more meaningful name checkIrreducibleCFG
* rename isLoopHeader to isLoopEntryPoint to reflect the fact
  that this function handle both natural and irreducible loops