stage2: Fix codegen for unions and error unions

When an union had a zero-sized payload type, we would lower the tag twice. This is fixed
by exiting early when `payload_size` is 0.

With regards to error unions, we were only accounting for padding for the payload field.
However, the errorset value can have a smaller alignment than the payload as well, i.e. error!usize.
We fix this by also accounting for padding/alignment of the error set tag of an error union.
23e2368ac3Luuk de Gram committed on 3/6/2022, 3:04:15 PMparentbf972e4
1 file changedLine totals unavailable