if-expressions must special case struct lval2rval

This is because they're the only operator where two structs can appear
without decaying via fold_*
x86_64 emitting lea always uses a pointer-sized register
all.run for current tests