swift
984bd99b - Fix SILCombine to devirtualize existentials wrapped in enum.

Commit
6 years ago
Fix SILCombine to devirtualize existentials wrapped in enum. This allows Swift code to implement a fast path via a protocol type check as follows: if let existentialVal = genericVal as? SomeProtocol { // do something fast. } Fixes <rdar://problem/46322928> Failure to devirtualize a protocol method applied to an opened existential blocks implemention of DataProtocol. Note: the approach of devirtualization via backward pattern matching is fundamentally wrong and will never be fully general. It should be a forward type propagation.
Author
Committer
Parents
Loading