Skip to content

Commit 69ee33a

Browse files
committed
Fix require operand to also include trackableDest.
1 parent 26259f6 commit 69ee33a

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

lib/SILOptimizer/Analysis/RegionAnalysis.cpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2539,11 +2539,16 @@ class PartitionOpTranslator {
25392539
auto trackableDest = tryToTrackValue(dest);
25402540
if (!trackableDest)
25412541
return;
2542+
2543+
if (requireOperands)
2544+
builder.addRequire(trackableDest->getRepresentative().getValue());
2545+
25422546
for (Operand *op : srcCollection) {
2547+
// If we have a trackable src, we need to require both if asked to and
2548+
// then merge the dest/src.
25432549
if (auto trackableSrc = tryToTrackValue(op->get())) {
25442550
if (requireOperands) {
25452551
builder.addRequire(trackableSrc->getRepresentative().getValue());
2546-
builder.addRequire(trackableDest->getRepresentative().getValue());
25472552
}
25482553
builder.addMerge(trackableDest->getRepresentative().getValue(), op);
25492554
}
@@ -2565,11 +2570,14 @@ class PartitionOpTranslator {
25652570
auto trackableDest = tryToTrackValue(array.front().get());
25662571
if (!trackableDest)
25672572
return;
2573+
2574+
if (requireOperands)
2575+
builder.addRequire(trackableDest->getRepresentative().getValue());
2576+
25682577
for (Operand &op : array.drop_front()) {
25692578
if (auto trackableSrc = tryToTrackValue(op.get())) {
25702579
if (requireOperands) {
25712580
builder.addRequire(trackableSrc->getRepresentative().getValue());
2572-
builder.addRequire(trackableDest->getRepresentative().getValue());
25732581
}
25742582
builder.addMerge(trackableDest->getRepresentative().getValue(), &op);
25752583
}

0 commit comments

Comments
 (0)