[ownership] Change SILUndef to return Any ownership for trivial values and owned for non-trivial values.

This is in preparation for verifying that when ownership verification is enabled
that only enums and trivial values can have any ownership. I am doing this in
preparation for eliminating ValueOwnershipKind::Trivial.

rdar://46294760
This commit is contained in:
Michael Gottesman
2018-11-26 16:39:22 -08:00
parent 83c4266e18
commit c9bb5161a1
16 changed files with 64 additions and 39 deletions

View File

@@ -305,9 +305,9 @@ void LoopCloner::collectLoopLiveOutValues(
}
static void
updateSSA(SILLoop *Loop,
updateSSA(SILModule &M, SILLoop *Loop,
DenseMap<SILValue, SmallVector<SILValue, 8>> &LoopLiveOutValues) {
SILSSAUpdater SSAUp;
SILSSAUpdater SSAUp(M);
for (auto &MapEntry : LoopLiveOutValues) {
// Collect out of loop uses of this value.
auto OrigValue = MapEntry.first;
@@ -335,6 +335,7 @@ static bool tryToUnrollLoop(SILLoop *Loop) {
auto *Preheader = Loop->getLoopPreheader();
if (!Preheader)
return false;
SILModule &M = Preheader->getParent()->getModule();
auto *Latch = Loop->getLoopLatch();
if (!Latch)
@@ -409,7 +410,7 @@ static bool tryToUnrollLoop(SILLoop *Loop) {
}
// Fixup SSA form for loop values used outside the loop.
updateSSA(Loop, LoopLiveOutValues);
updateSSA(M, Loop, LoopLiveOutValues);
return true;
}