http://llvm.org/docs/LangRef.html#parameter-attributes:
> This attribute is only valid on LLVM pointer arguments. It is generally used to pass structs and arrays by value, but is also valid on pointers to scalars. 

Huh?

You might still need to add a rewrite for providing storage for number values that would otherwise be r-values (and setting `IrFuncTyArg::byref` to true), but it seems unnecessary to reinvent the wheel for _all_ types.