If an instruction is defined in a block not the the one we try to get
the value in. We will keep chasing up the predecessors till we figure
out a value for the Val*.
This, however, can take us up to the entry block even though we are
not looking at a function argment.
FWIW: This is almost certainly easier to just do with Builder rather than parsing assembly strings :)