Merge pull request #13049 from DougGregor/optional-nil-comparison-type-ranking
diff --git a/lib/SILGen/SILGenBuilder.cpp b/lib/SILGen/SILGenBuilder.cpp
index b6d200d..c366171 100644
--- a/lib/SILGen/SILGenBuilder.cpp
+++ b/lib/SILGen/SILGenBuilder.cpp
@@ -739,6 +739,20 @@
return cloner.clone(result);
}
+BranchInst *SILGenBuilder::createBranch(SILLocation loc,
+ SILBasicBlock *targetBlock,
+ ArrayRef<ManagedValue> args) {
+ llvm::SmallVector<SILValue, 8> newArgs;
+ transform(args, std::back_inserter(newArgs),
+ [&](ManagedValue mv) -> SILValue { return mv.forward(SGF); });
+ return createBranch(loc, targetBlock, newArgs);
+}
+
+ReturnInst *SILGenBuilder::createReturn(SILLocation loc,
+ ManagedValue returnValue) {
+ return createReturn(loc, returnValue.forward(SGF));
+}
+
//===----------------------------------------------------------------------===//
// Switch Enum Builder
//===----------------------------------------------------------------------===//
diff --git a/lib/SILGen/SILGenBuilder.h b/lib/SILGen/SILGenBuilder.h
index 5b0e0c3..ba556ff 100644
--- a/lib/SILGen/SILGenBuilder.h
+++ b/lib/SILGen/SILGenBuilder.h
@@ -327,6 +327,13 @@
using SILBuilder::createBridgeObjectToRef;
ManagedValue createBridgeObjectToRef(SILLocation loc, ManagedValue mv,
SILType destType);
+
+ using SILBuilder::createBranch;
+ BranchInst *createBranch(SILLocation Loc, SILBasicBlock *TargetBlock,
+ ArrayRef<ManagedValue> Args);
+
+ using SILBuilder::createReturn;
+ ReturnInst *createReturn(SILLocation Loc, ManagedValue ReturnValue);
};
class SwitchCaseFullExpr;