Skip to content

Commit 330f300

Browse files
committed
[NFC] FSPrunedLiveness: Deduplicated initDef impls
Add a new SILNode taking overload and change the SILInstruction and SILValue taking overloads to call it.
1 parent 87abaaa commit 330f300

File tree

2 files changed

+11
-15
lines changed

2 files changed

+11
-15
lines changed

include/swift/SIL/FieldSensitivePrunedLiveness.h

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1294,20 +1294,16 @@ class FieldSensitiveMultiDefPrunedLiveRange
12941294
bits, [&](auto range) { initializeDef(def, range); });
12951295
}
12961296

1297-
void initializeDef(SILValue def, TypeTreeLeafTypeRange span) {
1297+
void initializeDef(SILNode *node, TypeTreeLeafTypeRange span) {
12981298
assert(Super::isInitialized());
1299-
defs.insert(def, span);
1300-
auto *block = def->getParentBlock();
1299+
defs.insert(node, span);
1300+
auto *block = node->getParentBlock();
13011301
defBlocks.insert(block, span);
13021302
initializeDefBlock(block, span);
13031303
}
13041304

13051305
void initializeDef(SILInstruction *def, TypeTreeLeafTypeRange span) {
1306-
assert(Super::isInitialized());
1307-
defs.insert(cast<SILNode>(def), span);
1308-
auto *block = def->getParent();
1309-
defBlocks.insert(block, span);
1310-
initializeDefBlock(block, span);
1306+
initializeDef(cast<SILNode>(def), span);
13111307
}
13121308

13131309
bool isInitialized() const { return Super::isInitialized() && !defs.empty(); }

lib/SILOptimizer/Mandatory/MoveOnlyAddressCheckerUtils.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -986,7 +986,7 @@ void UseState::initializeLiveness(
986986
"init!\n");
987987
// We cheat here slightly and use our address's operand.
988988
recordInitUse(address, address, liveness.getTopLevelSpan());
989-
liveness.initializeDef(address, liveness.getTopLevelSpan());
989+
liveness.initializeDef(SILValue(address), liveness.getTopLevelSpan());
990990
break;
991991
case swift::SILArgumentConvention::Indirect_Out:
992992
llvm_unreachable("Should never have out addresses here");
@@ -1018,15 +1018,15 @@ void UseState::initializeLiveness(
10181018
<< "Found move only arg closure box use... "
10191019
"adding mark_unresolved_non_copyable_value as init!\n");
10201020
recordInitUse(address, address, liveness.getTopLevelSpan());
1021-
liveness.initializeDef(address, liveness.getTopLevelSpan());
1021+
liveness.initializeDef(SILValue(address), liveness.getTopLevelSpan());
10221022
}
10231023
} else if (auto *box = dyn_cast<AllocBoxInst>(
10241024
lookThroughOwnershipInsts(projectBox->getOperand()))) {
10251025
LLVM_DEBUG(llvm::dbgs()
10261026
<< "Found move only var allocbox use... "
10271027
"adding mark_unresolved_non_copyable_value as init!\n");
10281028
recordInitUse(address, address, liveness.getTopLevelSpan());
1029-
liveness.initializeDef(address, liveness.getTopLevelSpan());
1029+
liveness.initializeDef(SILValue(address), liveness.getTopLevelSpan());
10301030
}
10311031
}
10321032

@@ -1038,7 +1038,7 @@ void UseState::initializeLiveness(
10381038
<< "Found ref_element_addr use... "
10391039
"adding mark_unresolved_non_copyable_value as init!\n");
10401040
recordInitUse(address, address, liveness.getTopLevelSpan());
1041-
liveness.initializeDef(address, liveness.getTopLevelSpan());
1041+
liveness.initializeDef(SILValue(address), liveness.getTopLevelSpan());
10421042
}
10431043

10441044
// Check if our address is from a global_addr. In such a case, we treat the
@@ -1049,7 +1049,7 @@ void UseState::initializeLiveness(
10491049
<< "Found global_addr use... "
10501050
"adding mark_unresolved_non_copyable_value as init!\n");
10511051
recordInitUse(address, address, liveness.getTopLevelSpan());
1052-
liveness.initializeDef(address, liveness.getTopLevelSpan());
1052+
liveness.initializeDef(SILValue(address), liveness.getTopLevelSpan());
10531053
}
10541054

10551055
if (auto *ptai = dyn_cast<PointerToAddressInst>(
@@ -1059,13 +1059,13 @@ void UseState::initializeLiveness(
10591059
<< "Found pointer to address use... "
10601060
"adding mark_unresolved_non_copyable_value as init!\n");
10611061
recordInitUse(address, address, liveness.getTopLevelSpan());
1062-
liveness.initializeDef(address, liveness.getTopLevelSpan());
1062+
liveness.initializeDef(SILValue(address), liveness.getTopLevelSpan());
10631063
}
10641064

10651065
if (auto *bai = dyn_cast_or_null<BeginApplyInst>(
10661066
stripAccessMarkers(address->getOperand())->getDefiningInstruction())) {
10671067
recordInitUse(address, address, liveness.getTopLevelSpan());
1068-
liveness.initializeDef(address, liveness.getTopLevelSpan());
1068+
liveness.initializeDef(SILValue(address), liveness.getTopLevelSpan());
10691069
}
10701070

10711071
// Now that we have finished initialization of defs, change our multi-maps

0 commit comments

Comments
 (0)