SIL: Verify that upcasts and downcasts cast between valid super/sub-classes.
SIL: Verify that upcasts and downcasts cast between valid super/sub-classes.

Use TypeBase::isSuperclassOf to validate the source and destination type of class cast instructions.

Swift SVN r8959

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