Fix type_of for enums to not lose data in some cases when immediate.
Fix type_of for enums to not lose data in some cases when immediate.

The previous implementation, when combined with small discriminants and
immediate types, caused problems for types like `Either<u8, i16>` which
are now small enough to be immediate and can have fields intersecting
the highest-alignment variant's alignment padding (which LLVM doesn't
preserve).  So let's not do that.

bluss/rand,0x73/rust,defuz/rust,fabricedesre/rust,aneeshusa/rust,servo/rust,philyoon/rust,pelmers/rust,kwantam/rust,philyoon/rust,aidancully/rust,mitsuhiko/rust,victorvde/rust,richo/rust,dwillmer/rust,mvdnes/rust,KokaKiwi/rust,kwantam/rust,robertg/rust,GBGamer/rust,aepsil0n/rust,mihneadb/rust,aneeshusa/rust,AerialX/rust-rt-minimal,hauleth/rust,pythonesque/rust,nham/rust,jashank/rust,barosl/rust,reem/rust,ktossell/rust,nham/rust,rohitjoshi/rust,ejjeong/rust,mitsuhiko/rust,jroesch/rust,carols10cents/rust,michaelballantyne/rust-gpu,nham/rust,AerialX/rust-rt-minimal,P1start/rust,carols10cents/rust,Ryman/rust,pczarn/rust,defuz/rust,ejjeong/rust,nwin/rust,ruud-v-a/rust,P1start/rust,dwillmer/rust,jbclements/rust,quornian/rust,michaelballantyne/rust-gpu,dwillmer/rust,emk/rust,seanrivera/rust,kwantam/rust,emk/rust,SiegeLord/rust,aidancully/rust,P1start/rust,rprichard/rust,ruud-v-a/rust,aepsil0n/rust,dwillmer/rust,reem/rust,reem/rust,GBGamer/rust,ruud-v-a/rust,zaeleus/rust,richo/rust,pythonesque/rust,pczarn/rust,AerialX/rust-rt-minimal,barosl/rust,barosl/rust,servo/rust,mdinger/rust,bombless/rust,zaeleus/rust,zubron/rust,mitsuhiko/rust,kwantam/rust,nwin/rust,rohitjoshi/rust,quornian/rust,Ryman/rust,cllns/rust,zubron/rust,l0kod/rust,rprichard/rust,dinfuehr/rust,GrahamDennis/rand,KokaKiwi/rust,graydon/rust,pelmers/rust,pshc/rust,KokaKiwi/rust,ebfull/rust,pczarn/rust,zubron/rust,AerialX/rust,aturon/rust,pelmers/rust,untitaker/rust,nwin/rust,servo/rust,0x73/rust,AerialX/rust-rt-minimal,zachwick/rust,jashank/rust,dinfuehr/rust,robertg/rust,kwantam/rust,pelmers/rust,quornian/rust,GBGamer/rust,jroesch/rust,mitsuhiko/rust,miniupnp/rust,ebfull/rust,gifnksm/rust,erickt/rust,aepsil0n/rust,michaelballantyne/rust-gpu,rprichard/rust,aturon/rust,ktossell/rust,cllns/rust,untitaker/rust,philyoon/rust,vhbit/rust,ebfull/rust,kwantam/rust,ktossell/rust,victorvde/rust,zaeleus/rust,jroesch/rust,mdinger/rust,kimroen/rust,mihneadb/rust,stepancheg/rust-ide-rust,miniupnp/rust,mahkoh/rust,quornian/rust,P1start/rust,aepsil0n/rust,zaeleus/rust,TheNeikos/rust,gifnksm/rust,nwin/rust,ejjeong/rust,l0kod/rust,miniupnp/rust,michaelballantyne/rust-gpu,barosl/rust,quornian/rust,krzysz00/rust,pshc/rust,erickt/rust,achanda/rand,robertg/rust,stepancheg/rust-ide-rust,nham/rust,pczarn/rust,rprichard/rust,rohitjoshi/rust,jbclements/rust,krzysz00/rust,GBGamer/rust,ruud-v-a/rust,nwin/rust,miniupnp/rust,aneeshusa/rust,ktossell/rust,andars/rust,TheNeikos/rust,Ryman/rust,mihneadb/rust,aidancully/rust,pythonesque/rust,omasanori/rust,zachwick/rust,ejjeong/rust,KokaKiwi/rust,jbclements/rust,stepancheg/rust-ide-rust,zubron/rust,shepmaster/rand,miniupnp/rust,andars/rust,philyoon/rust,zaeleus/rust,reem/rust,jroesch/rust,sae-bom/rust,graydon/rust,mahkoh/rust,carols10cents/rust,aidancully/rust,mihneadb/rust,hauleth/rust,carols10cents/rust,omasanori/rust,jbclements/rust,aturon/rust,erickt/rust,dinfuehr/rust,richo/rust,nwin/rust,servo/rust,AerialX/rust,SiegeLord/rust,GBGamer/rust,sae-bom/rust,robertg/rust,carols10cents/rust,jashank/rust,aneeshusa/rust,XMPPwocky/rust,AerialX/rust,rohitjoshi/rust,ebfull/rand,omasanori/rust,reem/rust,pshc/rust,jroesch/rust,andars/rust,avdi/rust,AerialX/rust-rt-minimal,l0kod/rust,avdi/rust,l0kod/rust,XMPPwocky/rust,krzysz00/rust,erickt/rust,untitaker/rust,gifnksm/rust,vhbit/rust,zubron/rust,l0kod/rust,stepancheg/rust-ide-rust,defuz/rust,mvdnes/rust,XMPPwocky/rust,zachwick/rust,avdi/rust,aneeshusa/rust,dwillmer/rust,pshc/rust,nwin/rust,untitaker/rust,bombless/rust,robertg/rust,miniupnp/rust,aidancully/rust,cllns/rust,stepancheg/rust-ide-rust,krzysz00/rust,dwillmer/rust,vhbit/rust,cllns/rust,barosl/rust,richo/rust,pythonesque/rust,seanrivera/rust,nham/rust,KokaKiwi/rust,cllns/rust,P1start/rust,barosl/rust,stepancheg/rust-ide-rust,defuz/rust,avdi/rust,bombless/rust,erickt/rust,mahkoh/rust,kimroen/rust,mdinger/rust,vhbit/rust,mvdnes/rust,ebfull/rust,graydon/rust,dinfuehr/rust,Ryman/rust,aepsil0n/rust,jashank/rust,KokaKiwi/rust,mdinger/rust,quornian/rust,andars/rust,cllns/rust,pczarn/rust,zachwick/rust,philyoon/rust,aturon/rust,pythonesque/rust,l0kod/rust,jbclements/rust,omasanori/rust,mitsuhiko/rust,fabricedesre/rust,XMPPwocky/rust,aneeshusa/rust,vhbit/rust,seanrivera/rust,aturon/rust,mihneadb/rust,andars/rust,pshc/rust,erickt/rust,fabricedesre/rust,dinfuehr/rust,emk/rust,victorvde/rust,retep998/rand,0x73/rust,carols10cents/rust,zaeleus/rust,barosl/rust,zubron/rust,richo/rust,pshc/rust,servo/rust,ejjeong/rust,jbclements/rust,hauleth/rust,jashank/rust,jashank/rust,0x73/rust,AerialX/rust,zubron/rust,huonw/rand,XMPPwocky/rust,pczarn/rust,emk/rust,nham/rust,ruud-v-a/rust,robertg/rust,TheNeikos/rust,jashank/rust,hauleth/rust,ejjeong/rust,pythonesque/rust,mitsuhiko/rust,hauleth/rust,pelmers/rust,aepsil0n/rust,avdi/rust,aturon/rust,vhbit/rust,SiegeLord/rust,michaelballantyne/rust-gpu,vhbit/rust,pshc/rust,victorvde/rust,XMPPwocky/rust,TheNeikos/rust,mihneadb/rust,jroesch/rust,bhickey/rand,michaelballantyne/rust-gpu,seanrivera/rust,graydon/rust,l0kod/rust,0x73/rust,hauleth/rust,dwillmer/rust,P1start/rust,jbclements/rust,mdinger/rust,SiegeLord/rust,vhbit/rust,SiegeLord/rust,defuz/rust,zachwick/rust,waynenilsen/rand,Ryman/rust,miniupnp/rust,victorvde/rust,emk/rust,gifnksm/rust,seanrivera/rust,SiegeLord/rust,Ryman/rust,bombless/rust,erickt/rust,mdinger/rust,kimroen/rust,sae-bom/rust,untitaker/rust,seanrivera/rust,SiegeLord/rust,mvdnes/rust,Ryman/rust,ruud-v-a/rust,gifnksm/rust,krzysz00/rust,pythonesque/rust,nham/rust,jroesch/rust,richo/rust,fabricedesre/rust,mahkoh/rust,rohitjoshi/rust,0x73/rust,rprichard/rust,sae-bom/rust,aturon/rust,jroesch/rust,aidancully/rust,rprichard/rust,bombless/rust,AerialX/rust-rt-minimal,omasanori/rust,miniupnp/rust,arthurprs/rand,nwin/rust,ebfull/rust,fabricedesre/rust,GBGamer/rust,zubron/rust,dwillmer/rust,sae-bom/rust,krzysz00/rust,stepancheg/rust-ide-rust,graydon/rust,mvdnes/rust,graydon/rust,kimroen/rust,pshc/rust,avdi/rust,quornian/rust,AerialX/rust,servo/rust,andars/rust,michaelballantyne/rust-gpu,P1start/rust,ktossell/rust,kimroen/rust,omasanori/rust,AerialX/rust,ktossell/rust,ktossell/rust,TheNeikos/rust,kimroen/rust,ebfull/rust,rohitjoshi/rust,mvdnes/rust,kimroen/rust,0x73/rust,pczarn/rust,bombless/rust,emk/rust,jashank/rust,pelmers/rust,philyoon/rust,zachwick/rust,jbclements/rust,fabricedesre/rust,dinfuehr/rust,TheNeikos/rust,reem/rust,servo/rust,l0kod/rust,GBGamer/rust,emk/rust,untitaker/rust,bombless/rust-docs-chinese,jbclements/rust,victorvde/rust,defuz/rust,gifnksm/rust,mitsuhiko/rust,mahkoh/rust,sae-bom/rust,mahkoh/rust,fabricedesre/rust,GBGamer/rust