A dbg.declare for a local/parameter describes the hardware location of
the source variable's value. This matches up with the semantics of the
alloca for the variable, whereas any addrspacecast inserted in order to
implement some source-level notion of address spaces does not.
When creating the dbg.declare intrinsic, attach it directly to the
alloca, not to any addrspacecast.
Update the DIExpression with the address space of the alloca, rather
than use the address space associated with the source level type.
This is unintuitive — can you add a comment explaining why it may not be valid and why address should only be used then?