Revert "Revert "Hoist more early returns as early as possible.""
Revert "Revert "Hoist more early returns as early as possible.""

This reverts commit r25947, reinstating r25943 with fixes.

This had been preemptively reverted fearing it might have broken
test/SILPasses/devirt_value_metatypes.swift, which it did. One of the
early exits that was hoisted should not have been moved.

I plan on another clean-up for that particular early exit in a
forthcoming commit.

Swift SVN r25958

CodaFi/swift,zisko/swift,russbishop/swift,return/swift,calebd/swift,russbishop/swift,hooman/swift,practicalswift/swift,tkremenek/swift,swiftix/swift,ken0nek/swift,sschiau/swift,zisko/swift,jmgc/swift,stephentyrone/swift,SwiftAndroid/swift,codestergit/swift,khizkhiz/swift,karwa/swift,codestergit/swift,milseman/swift,brentdax/swift,benlangmuir/swift,russbishop/swift,swiftix/swift.old,kstaring/swift,hughbe/swift,brentdax/swift,hughbe/swift,manavgabhawala/swift,cbrentharris/swift,jmgc/swift,arvedviehweger/swift,tinysun212/swift-windows,austinzheng/swift,tardieu/swift,karwa/swift,khizkhiz/swift,adrfer/swift,return/swift,xwu/swift,ben-ng/swift,jopamer/swift,xedin/swift,jmgc/swift,CodaFi/swift,SwiftAndroid/swift,JGiola/swift,kstaring/swift,kusl/swift,amraboelela/swift,IngmarStein/swift,calebd/swift,aschwaighofer/swift,adrfer/swift,return/swift,apple/swift,rudkx/swift,xwu/swift,devincoughlin/swift,kperryua/swift,slavapestov/swift,dduan/swift,devincoughlin/swift,Ivacker/swift,khizkhiz/swift,jckarter/swift,codestergit/swift,return/swift,OscarSwanros/swift,KrishMunot/swift,kentya6/swift,gottesmm/swift,aschwaighofer/swift,ben-ng/swift,cbrentharris/swift,OscarSwanros/swift,frootloops/swift,kperryua/swift,modocache/swift,deyton/swift,tjw/swift,brentdax/swift,uasys/swift,manavgabhawala/swift,tkremenek/swift,xedin/swift,airspeedswift/swift,gmilos/swift,kstaring/swift,modocache/swift,slavapestov/swift,stephentyrone/swift,bitjammer/swift,jtbandes/swift,tkremenek/swift,manavgabhawala/swift,brentdax/swift,gribozavr/swift,gregomni/swift,dduan/swift,practicalswift/swift,IngmarStein/swift,brentdax/swift,gribozavr/swift,arvedviehweger/swift,sschiau/swift,shajrawi/swift,gmilos/swift,calebd/swift,hughbe/swift,modocache/swift,huonw/swift,LeoShimonaka/swift,shahmishal/swift,CodaFi/swift,jmgc/swift,frootloops/swift,danielmartin/swift,codestergit/swift,tardieu/swift,rudkx/swift,gmilos/swift,Ivacker/swift,devincoughlin/swift,uasys/swift,milseman/swift,kusl/swift,practicalswift/swift,karwa/swift,shahmishal/swift,tjw/swift,sschiau/swift,JGiola/swift,tinysun212/swift-windows,aschwaighofer/swift,jtbandes/swift,xedin/swift,parkera/swift,tardieu/swift,benlangmuir/swift,austinzheng/swift,atrick/swift,nathawes/swift,nathawes/swift,SwiftAndroid/swift,jopamer/swift,aschwaighofer/swift,kusl/swift,gribozavr/swift,sschiau/swift,amraboelela/swift,deyton/swift,felix91gr/swift,stephentyrone/swift,calebd/swift,tinysun212/swift-windows,zisko/swift,parkera/swift,gribozavr/swift,return/swift,harlanhaskins/swift,devincoughlin/swift,johnno1962d/swift,tjw/swift,swiftix/swift,allevato/swift,therealbnut/swift,uasys/swift,apple/swift,xedin/swift,jckarter/swift,JGiola/swift,zisko/swift,atrick/swift,kperryua/swift,JGiola/swift,ken0nek/swift,jckarter/swift,Ivacker/swift,stephentyrone/swift,austinzheng/swift,russbishop/swift,KrishMunot/swift,parkera/swift,tinysun212/swift-windows,swiftix/swift.old,alblue/swift,kentya6/swift,atrick/swift,shajrawi/swift,tardieu/swift,kentya6/swift,kperryua/swift,sschiau/swift,gribozavr/swift,danielmartin/swift,harlanhaskins/swift,ken0nek/swift,xwu/swift,glessard/swift,adrfer/swift,hooman/swift,hooman/swift,lorentey/swift,slavapestov/swift,tkremenek/swift,karwa/swift,rudkx/swift,KrishMunot/swift,tinysun212/swift-windows,jmgc/swift,sdulal/swift,slavapestov/swift,mightydeveloper/swift,nathawes/swift,kentya6/swift,mightydeveloper/swift,cbrentharris/swift,natecook1000/swift,jopamer/swift,danielmartin/swift,gribozavr/swift,sschiau/swift,natecook1000/swift,shahmishal/swift,calebd/swift,johnno1962d/swift,nathawes/swift,swiftix/swift.old,Ivacker/swift,swiftix/swift.old,Ivacker/swift,MukeshKumarS/Swift,LeoShimonaka/swift,shahmishal/swift,sdulal/swift,glessard/swift,swiftix/swift,arvedviehweger/swift,russbishop/swift,therealbnut/swift,dduan/swift,tinysun212/swift-windows,hooman/swift,gottesmm/swift,lorentey/swift,djwbrown/swift,modocache/swift,codestergit/swift,ben-ng/swift,tjw/swift,parkera/swift,IngmarStein/swift,bitjammer/swift,CodaFi/swift,austinzheng/swift,swiftix/swift,kperryua/swift,ahoppen/swift,LeoShimonaka/swift,shahmishal/swift,practicalswift/swift,airspeedswift/swift,frootloops/swift,ahoppen/swift,modocache/swift,hughbe/swift,huonw/swift,karwa/swift,modocache/swift,tjw/swift,dduan/swift,Jnosh/swift,arvedviehweger/swift,emilstahl/swift,devincoughlin/swift,rudkx/swift,KrishMunot/swift,practicalswift/swift,Ivacker/swift,SwiftAndroid/swift,natecook1000/swift,JaSpa/swift,therealbnut/swift,arvedviehweger/swift,hooman/swift,jtbandes/swift,zisko/swift,russbishop/swift,IngmarStein/swift,mightydeveloper/swift,manavgabhawala/swift,djwbrown/swift,CodaFi/swift,tjw/swift,sdulal/swift,sdulal/swift,danielmartin/swift,djwbrown/swift,ken0nek/swift,JaSpa/swift,jopamer/swift,gribozavr/swift,devincoughlin/swift,MukeshKumarS/Swift,IngmarStein/swift,deyton/swift,gmilos/swift,atrick/swift,karwa/swift,glessard/swift,ben-ng/swift,glessard/swift,LeoShimonaka/swift,KrishMunot/swift,natecook1000/swift,jckarter/swift,allevato/swift,atrick/swift,khizkhiz/swift,huonw/swift,jckarter/swift,cbrentharris/swift,gribozavr/swift,OscarSwanros/swift,gottesmm/swift,sschiau/swift,aschwaighofer/swift,swiftix/swift.old,ahoppen/swift,mightydeveloper/swift,gregomni/swift,bitjammer/swift,gottesmm/swift,harlanhaskins/swift,codestergit/swift,slavapestov/swift,MukeshKumarS/Swift,ken0nek/swift,gottesmm/swift,stephentyrone/swift,hughbe/swift,Ivacker/swift,kusl/swift,huonw/swift,frootloops/swift,swiftix/swift.old,therealbnut/swift,rudkx/swift,emilstahl/swift,lorentey/swift,bitjammer/swift,sdulal/swift,shahmishal/swift,allevato/swift,kstaring/swift,djwbrown/swift,adrfer/swift,lorentey/swift,emilstahl/swift,airspeedswift/swift,karwa/swift,therealbnut/swift,MukeshKumarS/Swift,xedin/swift,jmgc/swift,dduan/swift,johnno1962d/swift,khizkhiz/swift,alblue/swift,kstaring/swift,khizkhiz/swift,JaSpa/swift,swiftix/swift.old,swiftix/swift.old,tkremenek/swift,sdulal/swift,nathawes/swift,uasys/swift,alblue/swift,LeoShimonaka/swift,kentya6/swift,mightydeveloper/swift,frootloops/swift,return/swift,roambotics/swift,practicalswift/swift,arvedviehweger/swift,shahmishal/swift,apple/swift,ken0nek/swift,gregomni/swift,airspeedswift/swift,MukeshKumarS/Swift,practicalswift/swift,huonw/swift,austinzheng/swift,uasys/swift,brentdax/swift,Jnosh/swift,dreamsxin/swift,austinzheng/swift,CodaFi/swift,adrfer/swift,LeoShimonaka/swift,shajrawi/swift,IngmarStein/swift,slavapestov/swift,kentya6/swift,sdulal/swift,SwiftAndroid/swift,jopamer/swift,gottesmm/swift,ben-ng/swift,JaSpa/swift,jmgc/swift,JGiola/swift,allevato/swift,danielmartin/swift,shajrawi/swift,return/swift,amraboelela/swift,roambotics/swift,nathawes/swift,arvedviehweger/swift,felix91gr/swift,jtbandes/swift,gregomni/swift,brentdax/swift,MukeshKumarS/Swift,djwbrown/swift,alblue/swift,kusl/swift,cbrentharris/swift,dreamsxin/swift,roambotics/swift,hooman/swift,lorentey/swift,ben-ng/swift,jtbandes/swift,alblue/swift,airspeedswift/swift,devincoughlin/swift,tardieu/swift,manavgabhawala/swift,felix91gr/swift,MukeshKumarS/Swift,LeoShimonaka/swift,xwu/swift,shajrawi/swift,frootloops/swift,benlangmuir/swift,LeoShimonaka/swift,gottesmm/swift,emilstahl/swift,shajrawi/swift,amraboelela/swift,xwu/swift,johnno1962d/swift,manavgabhawala/swift,apple/swift,KrishMunot/swift,johnno1962d/swift,manavgabhawala/swift,deyton/swift,alblue/swift,deyton/swift,tkremenek/swift,natecook1000/swift,amraboelela/swift,lorentey/swift,adrfer/swift,apple/swift,gmilos/swift,gregomni/swift,codestergit/swift,russbishop/swift,jopamer/swift,ben-ng/swift,Jnosh/swift,calebd/swift,cbrentharris/swift,airspeedswift/swift,kusl/swift,tjw/swift,bitjammer/swift,stephentyrone/swift,swiftix/swift,tardieu/swift,ahoppen/swift,huonw/swift,shajrawi/swift,JaSpa/swift,emilstahl/swift,Jnosh/swift,milseman/swift,kstaring/swift,swiftix/swift,shajrawi/swift,airspeedswift/swift,xedin/swift,harlanhaskins/swift,bitjammer/swift,djwbrown/swift,natecook1000/swift,CodaFi/swift,IngmarStein/swift,therealbnut/swift,parkera/swift,zisko/swift,hooman/swift,adrfer/swift,cbrentharris/swift,felix91gr/swift,gmilos/swift,felix91gr/swift,kentya6/swift,emilstahl/swift,harlanhaskins/swift,deyton/swift,kusl/swift,uasys/swift,JaSpa/swift,hughbe/swift,felix91gr/swift,jopamer/swift,benlangmuir/swift,emilstahl/swift,allevato/swift,Jnosh/swift,austinzheng/swift,tardieu/swift,kusl/swift,devincoughlin/swift,apple/swift,djwbrown/swift,ahoppen/swift,OscarSwanros/swift,khizkhiz/swift,dduan/swift,uasys/swift,frootloops/swift,rudkx/swift,jtbandes/swift,lorentey/swift,kentya6/swift,jckarter/swift,Ivacker/swift,kperryua/swift,allevato/swift,johnno1962d/swift,calebd/swift,amraboelela/swift,cbrentharris/swift,milseman/swift,roambotics/swift,bitjammer/swift,slavapestov/swift,sdulal/swift,stephentyrone/swift,emilstahl/swift,JGiola/swift,milseman/swift,johnno1962d/swift,ken0nek/swift,allevato/swift,mightydeveloper/swift,ahoppen/swift,JaSpa/swift,SwiftAndroid/swift,milseman/swift,danielmartin/swift,danielmartin/swift,roambotics/swift,alblue/swift,KrishMunot/swift,mightydeveloper/swift,Jnosh/swift,modocache/swift,zisko/swift,harlanhaskins/swift,OscarSwanros/swift,benlangmuir/swift,therealbnut/swift,amraboelela/swift,jtbandes/swift,OscarSwanros/swift,nathawes/swift,xedin/swift,SwiftAndroid/swift,kstaring/swift,tkremenek/swift,natecook1000/swift,kperryua/swift,gmilos/swift,xedin/swift,parkera/swift,xwu/swift,jckarter/swift,dduan/swift,hughbe/swift,tinysun212/swift-windows,shahmishal/swift,mightydeveloper/swift,swiftix/swift,lorentey/swift,felix91gr/swift,roambotics/swift,benlangmuir/swift,aschwaighofer/swift,harlanhaskins/swift,xwu/swift,Jnosh/swift,deyton/swift,sschiau/swift,atrick/swift,milseman/swift,parkera/swift,glessard/swift,aschwaighofer/swift,practicalswift/swift,glessard/swift,gregomni/swift,karwa/swift,parkera/swift,OscarSwanros/swift,huonw/swift