Test int-to-pointer conversion.

We actually get this wrong: we might expect an 'i32 i' to be defined in a function, but if it's allocated on the stack, %i is actually a pointer to what C calls 'i'!
No need to cast things to their own type!
Gather in-scope values from all blocks up to now.

The assertion may be in a block other than the one where variables are defined.

Q: does this imply a risky dependence on LLVM block ordering or other scoping rules?
Deal with extra indirection of stack variables.