sorry, I'd like to bump LLVM again, the previous version happened to be
incapable of building LLVM even without Souper due to crashing on quite
a few files.  this one builds itself just fine.
don't tell people the default is on/off since the cl::opt class doesn't accept
those strings, use true/false instead
Merge pull request #77 from regehr/cleanup

cmd line help cleanup
Merge pull request #76 from regehr/bump-llvm

sorry, I'd like to bump LLVM again, the previous version happened to be
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
Merge branch 'issue_26' of https://github.com/chenyang78/souper into issue_26