Skip to content

Commit 19c8bd6

Browse files
committed
Add FIXMEs for calls to liveness that fail to check pointer escapes.
1 parent 727aed3 commit 19c8bd6

File tree

3 files changed

+9
-0
lines changed

3 files changed

+9
-0
lines changed

lib/SILOptimizer/Mandatory/MoveOnlyAddressCheckerUtils.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3827,6 +3827,8 @@ bool MoveOnlyAddressCheckerPImpl::performSingleCheck(
38273827

38283828
CopiedLoadBorrowEliminationState state(markedAddress->getFunction());
38293829
CopiedLoadBorrowEliminationVisitor copiedLoadBorrowEliminator(state);
3830+
// FIXME: should check AddressUseKind::NonEscaping != walk() to handle
3831+
// PointerEscape.
38303832
if (AddressUseKind::Unknown ==
38313833
std::move(copiedLoadBorrowEliminator).walk(markedAddress)) {
38323834
LLVM_DEBUG(llvm::dbgs() << "Failed copied load borrow eliminator visit: "
@@ -3869,6 +3871,8 @@ bool MoveOnlyAddressCheckerPImpl::performSingleCheck(
38693871
RAIILLVMDebug l("main use gathering visitor");
38703872

38713873
visitor.reset(markedAddress);
3874+
// FIXME: should check walkResult != AddressUseKind::NonEscaping to handle
3875+
// PointerEscape.
38723876
if (AddressUseKind::Unknown == std::move(visitor).walk(markedAddress)) {
38733877
LLVM_DEBUG(llvm::dbgs()
38743878
<< "Failed access path visit: " << *markedAddress);

lib/SILOptimizer/Mandatory/MoveOnlyUtils.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -583,6 +583,7 @@ bool siloptimizer::eliminateTemporaryAllocationsFromLet(
583583
};
584584
FindCopyAddrWalker walker(copiesToVisit);
585585
std::move(walker).walk(markedInst);
586+
// FIXME: should check walk() == AddressUseKind::NonEscaping.
586587

587588
bool madeChange = false;
588589

@@ -612,6 +613,8 @@ bool siloptimizer::eliminateTemporaryAllocationsFromLet(
612613
nextCAI = nullptr;
613614
SimpleTemporaryAllocStackElimVisitor visitor(state, cai, nextCAI);
614615

616+
// FIXME: should check AddressUseKind::NonEscaping != walk() to handle
617+
// PointerEscape.
615618
if (AddressUseKind::Unknown == std::move(visitor).walk(cai->getDest()))
616619
return false;
617620

lib/SILOptimizer/Utils/SILIsolationInfo.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,8 @@ inferIsolationInfoForTempAllocStack(AllocStackInst *asi) {
211211
AddressWalker walker(state);
212212

213213
// If we fail to walk, emit an unknown patten error.
214+
//
215+
// FIXME: check AddressUseKind::NonEscaping != walk().
214216
if (AddressUseKind::Unknown == std::move(walker).walk(asi)) {
215217
return SILIsolationInfo();
216218
}

0 commit comments

Comments
 (0)