Make omission of impossible if-else branches work with constants
Make omission of impossible if-else branches work with constants

Until now, we only optimized away impossible branches when there is a
literal true/false in the code. But since the LLVM IR builder already does
constant folding for us, we can trivially expand that to work with
constants as well.

Refs #7834

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