Skip to content

Commit 9c40c25

Browse files
authored
Merge pull request swiftlang#75364 from gottesmm/release/6.0-rdar131757602
[6.0] Revert "[region-isolation] Make "unknown pattern error" always an error
2 parents e177316 + 811e3a0 commit 9c40c25

File tree

1 file changed

+37
-22
lines changed

1 file changed

+37
-22
lines changed

lib/SILOptimizer/Mandatory/TransferNonSendable.cpp

Lines changed: 37 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -157,23 +157,6 @@ static Expr *inferArgumentExprFromApplyExpr(ApplyExpr *sourceApply,
157157
// MARK: Diagnostics
158158
//===----------------------------------------------------------------------===//
159159

160-
/// Emit the "unknown pattern error" at the SILLocation of \p inst.
161-
static void diagnoseUnknownPatternError(SILInstruction *inst) {
162-
if (shouldAbortOnUnknownPatternMatchError()) {
163-
llvm::report_fatal_error(
164-
"RegionIsolation: Aborting on unknown pattern match error");
165-
}
166-
167-
auto &ctx = inst->getFunction()->getASTContext();
168-
auto loc = inst->getLoc().getSourceLoc();
169-
170-
ctx.Diags.diagnose(loc, diag::regionbasedisolation_unknown_pattern);
171-
}
172-
173-
static void diagnoseUnknownPatternError(Operand *op) {
174-
diagnoseUnknownPatternError(op->getUser());
175-
}
176-
177160
template <typename... T, typename... U>
178161
static InFlightDiagnostic diagnoseError(ASTContext &context, SourceLoc loc,
179162
Diag<T...> diag, U &&...args) {
@@ -748,7 +731,14 @@ class UseAfterTransferDiagnosticEmitter {
748731
}
749732

750733
void emitUnknownPatternError() {
751-
diagnoseUnknownPatternError(transferOp->getUser());
734+
if (shouldAbortOnUnknownPatternMatchError()) {
735+
llvm::report_fatal_error(
736+
"RegionIsolation: Aborting on unknown pattern match error");
737+
}
738+
739+
diagnoseError(transferOp->getUser(),
740+
diag::regionbasedisolation_unknown_pattern)
741+
.limitBehaviorIf(getBehaviorLimit());
752742
}
753743

754744
private:
@@ -1169,7 +1159,12 @@ void TransferNonSendableImpl::emitUseAfterTransferDiagnostics() {
11691159
// tells the user to file a bug. This importantly ensures that we can
11701160
// guarantee that we always find the require if we successfully compile.
11711161
if (!didEmitRequireNote) {
1172-
diagnoseUnknownPatternError(transferOp);
1162+
if (shouldAbortOnUnknownPatternMatchError()) {
1163+
llvm::report_fatal_error(
1164+
"RegionIsolation: Aborting on unknown pattern match error");
1165+
}
1166+
1167+
diagnoseError(transferOp, diag::regionbasedisolation_unknown_pattern);
11731168
continue;
11741169
}
11751170

@@ -1231,7 +1226,14 @@ class TransferNonTransferrableDiagnosticEmitter {
12311226
}
12321227

12331228
void emitUnknownPatternError() {
1234-
diagnoseUnknownPatternError(getOperand()->getUser());
1229+
if (shouldAbortOnUnknownPatternMatchError()) {
1230+
llvm::report_fatal_error(
1231+
"RegionIsolation: Aborting on unknown pattern match error");
1232+
}
1233+
1234+
diagnoseError(getOperand()->getUser(),
1235+
diag::regionbasedisolation_unknown_pattern)
1236+
.limitBehaviorIf(getBehaviorLimit());
12351237
}
12361238

12371239
void emitUnknownUse(SILLocation loc) {
@@ -1724,7 +1726,14 @@ class InOutSendingNotDisconnectedDiagnosticEmitter {
17241726
}
17251727

17261728
void emitUnknownPatternError() {
1727-
diagnoseUnknownPatternError(info.functionExitingInst);
1729+
if (shouldAbortOnUnknownPatternMatchError()) {
1730+
llvm::report_fatal_error(
1731+
"RegionIsolation: Aborting on unknown pattern match error");
1732+
}
1733+
1734+
diagnoseError(info.functionExitingInst,
1735+
diag::regionbasedisolation_unknown_pattern)
1736+
.limitBehaviorIf(getBehaviorLimit());
17281737
}
17291738

17301739
void emit();
@@ -1984,7 +1993,13 @@ struct DiagnosticEvaluator final
19841993
}
19851994

19861995
void handleUnknownCodePattern(const PartitionOp &op) const {
1987-
diagnoseUnknownPatternError(op.getSourceInst());
1996+
if (shouldAbortOnUnknownPatternMatchError()) {
1997+
llvm::report_fatal_error(
1998+
"RegionIsolation: Aborting on unknown pattern match error");
1999+
}
2000+
2001+
diagnoseError(op.getSourceInst(),
2002+
diag::regionbasedisolation_unknown_pattern);
19882003
}
19892004

19902005
bool isActorDerived(Element element) const {

0 commit comments

Comments
 (0)