Commit Graph

3 Commits

Author SHA1 Message Date
Meghana Gupta
5285bf7200 Turn off speculative devirtualization by default. (#29359)
Turn off speculative devirtualization by default. Add a flag to support enabling the pass.
Fixes rdar://58778959 and rdar://58429282
2020-01-24 10:23:06 -08:00
Slava Pestov
53bfc767a3 SIL: Track target formal type for casts
SIL type lowering erases DynamicSelfType, so we generate
incorrect code when casting to DynamicSelfType. Fixing this
requires a fair amount of plumbing, but most of the
changes are mechanical.

Note that the textual SIL syntax for casts has changed
slightly; the target type is now a formal type without a '$',
not a SIL type.

Also, the unconditional_checked_cast_value and
checked_cast_value_br instructions now take the _source_
formal type as well, just like the *_addr forms they are
intended to replace.
2019-11-20 21:30:28 -05:00
Slava Pestov
72c9840025 SILOptimizer: Fix speculative devirtualization of constructor calls
By unintentionally using SILDeclRef::getFuncDecl() we were getting a nullptr back,
and passing it in to ClassDecl::getOverridingDecl(). This started crashing with a
refactoring I'm making. Fix this and add a test.
2019-07-30 15:14:33 -04:00