Commits

Mark Lacey committed fbc7b76614e
Be more conservative about stripping upcasts in devirtualization. This fixes two issues that I ran into with the devirtualizer and also paves the path to more simplification of the devirtualizer code. Both issues are due to having a very liberal definition of what can be considered an upcast. In one case, we tunnel through an unchecked_ref_cast and then fail to devirtualize because the source type is not a class type (rdar://problem/20115523). We would be better off sticking to the class type we started with. In the other case, we tunnel through an unchecked_ref_bit_cast and this results in an attempt to insert a checked_cast_br between unrelated types (rdar://problem/20117782). Swift SVN r25976