Merge remote-tracking branch 'origin/main' into rebranch

This commit is contained in:
swift-ci
2021-09-30 15:11:41 -07:00
199 changed files with 6656 additions and 1378 deletions

View File

@@ -865,8 +865,8 @@ void swift::placeFuncRef(ApplyInst *ai, DominanceInfo *domInfo) {
/// Add an argument, \p val, to the branch-edge that is pointing into
/// block \p Dest. Return a new instruction and do not erase the old
/// instruction.
TermInst *swift::addArgumentToBranch(SILValue val, SILBasicBlock *dest,
TermInst *branch) {
TermInst *swift::addArgumentsToBranch(ArrayRef<SILValue> vals,
SILBasicBlock *dest, TermInst *branch) {
SILBuilderWithScope builder(branch);
if (auto *cbi = dyn_cast<CondBranchInst>(branch)) {
@@ -880,10 +880,12 @@ TermInst *swift::addArgumentToBranch(SILValue val, SILBasicBlock *dest,
falseArgs.push_back(arg);
if (dest == cbi->getTrueBB()) {
trueArgs.push_back(val);
for (auto val : vals)
trueArgs.push_back(val);
assert(trueArgs.size() == dest->getNumArguments());
} else {
falseArgs.push_back(val);
for (auto val : vals)
falseArgs.push_back(val);
assert(falseArgs.size() == dest->getNumArguments());
}
@@ -899,7 +901,8 @@ TermInst *swift::addArgumentToBranch(SILValue val, SILBasicBlock *dest,
for (auto arg : bi->getArgs())
args.push_back(arg);
args.push_back(val);
for (auto val : vals)
args.push_back(val);
assert(args.size() == dest->getNumArguments());
return builder.createBranch(bi->getLoc(), bi->getDestBB(), args);
}