Skip to content

Commit dfbb2bd

Browse files
committed
Add verification to ensure we don't have redundant borrow scopes for @guaranteed forwarding phis
1 parent dccb5ac commit dfbb2bd

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

lib/SIL/Verifier/SILVerifier.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4880,6 +4880,17 @@ class SILVerifier : public SILVerifierBase<SILVerifier> {
48804880
}
48814881

48824882
void checkBranchInst(BranchInst *BI) {
4883+
for (auto arg : BI->getArgs()) {
4884+
auto *borrow = dyn_cast<BeginBorrowInst>(arg);
4885+
if (!borrow) {
4886+
continue;
4887+
}
4888+
auto op = borrow->getOperand();
4889+
if (op->getOwnershipKind() != OwnershipKind::Guaranteed) {
4890+
continue;
4891+
}
4892+
assert(!isGuaranteedForwarding(op));
4893+
}
48834894
require(BI->getArgs().size() == BI->getDestBB()->args_size(),
48844895
"branch has wrong number of arguments for dest bb");
48854896
require(std::equal(BI->getArgs().begin(), BI->getArgs().end(),

0 commit comments

Comments
 (0)