swift
953a6cfd - [move-only] When adding implicit liveness uses for class field/global accesses, do not use the terminator, use the end access.

Commit
2 years ago
[move-only] When adding implicit liveness uses for class field/global accesses, do not use the terminator, use the end access. Previously, when doing this I could just use the terminator both in cases of inout and for class field/global accesses... but after some recent changes to field sensitive pruned liveness, this seems to no longer work. So just do the right thing and use the field access. The specific bug was that we would introduce a destroy_addr along one of the paths where the value wasn't defined resulting in a dominance error. I added a SIL test that shows this fixes the issue, a swift test, and also an Interpreter test that validates the correctness. rdar://111659649 (cherry picked from commit 7028381fe16cca5a8d1cca558542d8776db60d4f)
Author
Committer
Parents
Loading