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
More control over debug information

* added one more cmdline option -debug-level which
  controls the verbose level of debug message. The larger
  the number is, the more verbose message is generated.
  The default level is 1.

* when the debug-level is larger than 1, then dump all
  replacements that collected by souper before they are processed
  by KLEE.
Temporary checkin

not finish yes
Temporary check-in

* fixed some issues in getUBPhiPaths

* Need to add more notes.
Last bit of comments

Looks like it works now.

I will create another separate branch for issuing pull request,
because this branch has code in an earlier pull request, which
has not been merged into the upstream.