Skip to content

Commit 8e6feff

Browse files
authored
Merge pull request #75317 from gottesmm/rdar131757602
Revert "[region-isolation] Make "unknown pattern error" always an error
2 parents e3577ed + 219073b commit 8e6feff

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
@@ -158,23 +158,6 @@ static Expr *inferArgumentExprFromApplyExpr(ApplyExpr *sourceApply,
158158
// MARK: Diagnostics
159159
//===----------------------------------------------------------------------===//
160160

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

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

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

@@ -1232,7 +1227,14 @@ class TransferNonTransferrableDiagnosticEmitter {
12321227
}
12331228

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

12381240
void emitUnknownUse(SILLocation loc) {
@@ -1725,7 +1727,14 @@ class InOutSendingNotDisconnectedDiagnosticEmitter {
17251727
}
17261728

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

17311740
void emit();
@@ -1985,7 +1994,13 @@ struct DiagnosticEvaluator final
19851994
}
19861995

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

19912006
bool isActorDerived(Element element) const {

0 commit comments

Comments
 (0)