Commits

Joe Groff committed 666be0ff4ac
SILGen: Match 'is' patterns. Casts to concrete struct types are orthogonal to each other, so when we see one or more "is S" patterns in a switch, we can specialize the clause matrix on each of those types. Casts to class types and casts to or from archetypes are a bit trickier since they don't necessarily refute other types, so our ability to specialize on those cases is limited. With type relationship information, we could refute casts to unrelated classes or concrete types, but that data doesn't survive type-checking right now. For now, when we specialize on a class or archetype cast, conservatively preserve casts to all other classes or concrete types. In the class case, a class cast is at least able to refute non-class casts. Swift SVN r6057