librustc: Emit enum variant constructor at callsite instead of via a call to a function.
librustc: Emit tuple struct constructor at callsite instead of via a call to a function.
librustc: Only emit constructor functions as necessary.
librustc: Set enum discriminant only after field translation.
Ignore one test.
auto merge of #15765 : luqmana/rust/iec, r=pcwalton

Fixes #15400.