Fix Makefiles to build / use a dynamic library.
Add dummy signature-assigning pass.

This is to commit the hacking I've done so far to get familiar with writing an
LLVM pass. The basic iteration needed to assign signatures and update values
is present, but there's a lot of stuff to unclutter.
Add scaffold passes for instrumenting basic blocks.
Draft signature updates in basic blocks.

This is the result of some hacking to learn how to insert instructions, load
& store values etc. and is thus a bit all over the place. Basic instrumentation
seems to work, i.e. instructions remain there after optimizations etc.

There are no signature comparisons happening yet and the use of global variables
prevents carrying signatures in registers between blocks.
Fix instrumentation to store the updated GSR including D.
Implement GSR and D with stack allocations.

This allows mem2reg to later promote them to SSA registers.

Some phi-nodes in my sample code still allow undefined-ness for GSR and D,
which is probably due to both values not being initialized somewhere.
Execute ud2 upon signature mismatch.

Super hackish proof of concept, has to be cleaned up a lot.
Add basic aliasing detection for CFGs.
Collect basic blocks via which aliasing occurs.

This should allow for straightforward proxy block insertion later on.
Insert proxy blocks on edges leading to aliasing blocks.
Clean up debug output & pass statistics.
Insert proxy blocks generically (not just for BranchInst's).

I can't think of a case right now where this simple approach would not work.
Initialize GSR with actual entry block signature instead of 0.

This is a quick fix to deal with more than one function per module or pass run,
I'm not yet sure which. After instrumenting the first function, initializing
the GSR with 0 caused signature mismatch in all following functions.

Not pretty and "-instcombine" still eats most of the checking code due to
constant folding, unfortunately.
Add skeleton for callgraph dealising pass.
Commit WIP on block instrumentation before restructuring.
Refactor block instrumentation & expand analysis data.

* CFG dealiasing is required before instrumentation.

First part, untested, builds with a few warnings.
Finish refactoring of block instrumentation & analysis.

* Fixed a few undiscovered / newly introduced? bugs in the process.

Probably still a lot of room for improvement, but it's way more readable and
robust now in my eyes.
Make AssignBlockSignatures a ModulePass.

The use of nextID so far was actually illegal according to docs (keeping state
across invocation of runOnFunction), because we want unique signatures across
the whole module it's now a ModulePass.
Add utility pass to split basic blocks at call instructions.
Set up proper dependencies between dealiasing / splitting & signature assignment.

* Added nicer debug output.