Skip to content

Commit ab47788

Browse files
committed
Fix store_borrow pattern in DifferentiableActivityAnalysis
Update the store_borrow pattern to correctly propagate Varied
1 parent 69d6781 commit ab47788

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

lib/SILOptimizer/Analysis/DifferentiableActivityAnalysis.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,10 +154,15 @@ void DifferentiableActivityInfo::propagateVaried(
154154
propagateVariedInwardsThroughProjections(si->getDest(), i); \
155155
}
156156
PROPAGATE_VARIED_THROUGH_STORE(Store)
157-
PROPAGATE_VARIED_THROUGH_STORE(StoreBorrow)
158157
PROPAGATE_VARIED_THROUGH_STORE(CopyAddr)
159158
PROPAGATE_VARIED_THROUGH_STORE(UnconditionalCheckedCastAddr)
160159
#undef PROPAGATE_VARIED_THROUGH_STORE
160+
else if (auto *sbi = dyn_cast<StoreBorrowInst>(inst)) {
161+
if (isVaried(sbi->getSrc(), i)) {
162+
setVariedAndPropagateToUsers(sbi, i);
163+
propagateVariedInwardsThroughProjections(sbi, i);
164+
}
165+
}
161166
// Handle `tuple_element_addr`.
162167
else if (auto *teai = dyn_cast<TupleElementAddrInst>(inst)) {
163168
if (isVaried(teai->getOperand(), i)) {

0 commit comments

Comments
 (0)