File tree Expand file tree Collapse file tree 2 files changed +6
-5
lines changed Expand file tree Collapse file tree 2 files changed +6
-5
lines changed Original file line number Diff line number Diff line change @@ -150,6 +150,8 @@ struct InteriorLivenessVisitor :
150
150
151
151
bool handlePointerEscape (Operand *use) {
152
152
interiorLiveness.addressUseKind = AddressUseKind::PointerEscape;
153
+ if (!handleUsePoint (use, UseLifetimeConstraint::NonLifetimeEnding))
154
+ return false ;
153
155
154
156
return true ;
155
157
}
Original file line number Diff line number Diff line change @@ -1110,12 +1110,11 @@ bool BorrowedValue::visitInteriorPointerOperandHelper(
1110
1110
continue ;
1111
1111
}
1112
1112
1113
- // Look through object. SingleValueInstruction is overly restrictive but
1114
- // rules out any interesting corner cases.
1113
+ // Look through object.
1115
1114
if (auto *svi = dyn_cast<SingleValueInstruction>(user)) {
1116
- if (ForwardingInstruction::isa (user )) {
1117
- for (auto *use : svi-> getUses ()) {
1118
- worklist. push_back (use );
1115
+ if (Projection::isObjectProjection (svi )) {
1116
+ for (SILValue result : user-> getResults ()) {
1117
+ llvm::copy (result-> getUses (), std::back_inserter (worklist) );
1119
1118
}
1120
1119
continue ;
1121
1120
}
You can’t perform that action at this time.
0 commit comments