Skip to content

Commit 1370d71

Browse files
committed
---
yaml --- r: 349420 b: refs/heads/master-next c: 5341b84 h: refs/heads/master
1 parent 96f7a39 commit 1370d71

File tree

14 files changed

+73
-22
lines changed

14 files changed

+73
-22
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
refs/heads/master: 3574c513bbc5578dd9346b4ea9ab5995c5927bb5
3-
refs/heads/master-next: 823113c1ff5dd6845f49f8471609a4bea3ccb989
3+
refs/heads/master-next: 5341b841273a46522b721a77a7caea431180c593
44
refs/tags/osx-passed: b6b74147ef8a386f532cf9357a1bde006e552c54
55
refs/tags/swift-2.2-SNAPSHOT-2015-12-01-a: 6bb18e013c2284f2b45f5f84f2df2887dc0f7dea
66
refs/tags/swift-2.2-SNAPSHOT-2015-12-01-b: 66d897bfcf64a82cb9a87f5e663d889189d06d07

branches/master-next/include/swift/AST/Decl.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5934,7 +5934,7 @@ class OperatorDecl;
59345934
enum class SelfAccessKind : uint8_t {
59355935
NonMutating,
59365936
Mutating,
5937-
__Consuming,
5937+
Consuming,
59385938
};
59395939

59405940
/// Diagnostic printing of \c SelfAccessKind.
@@ -6037,7 +6037,7 @@ class FuncDecl : public AbstractFunctionDecl {
60376037
return getSelfAccessKind() == SelfAccessKind::NonMutating;
60386038
}
60396039
bool isConsuming() const {
6040-
return getSelfAccessKind() == SelfAccessKind::__Consuming;
6040+
return getSelfAccessKind() == SelfAccessKind::Consuming;
60416041
}
60426042

60436043
SelfAccessKind getSelfAccessKind() const;

branches/master-next/include/swift/Serialization/ModuleFormat.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ using MetatypeRepresentationField = BCFixed<2>;
300300
enum class SelfAccessKind : uint8_t {
301301
NonMutating = 0,
302302
Mutating,
303-
__Consuming,
303+
Consuming,
304304
};
305305
using SelfAccessKindField = BCFixed<2>;
306306

branches/master-next/lib/AST/ASTContext.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2508,7 +2508,7 @@ AnyFunctionType::Param swift::computeSelfParam(AbstractFunctionDecl *AFD,
25082508

25092509
auto flags = ParameterTypeFlags();
25102510
switch (selfAccess) {
2511-
case SelfAccessKind::__Consuming:
2511+
case SelfAccessKind::Consuming:
25122512
flags = flags.withOwned(true);
25132513
break;
25142514
case SelfAccessKind::Mutating:

branches/master-next/lib/AST/Decl.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -359,7 +359,7 @@ llvm::raw_ostream &swift::operator<<(llvm::raw_ostream &OS,
359359
switch (SAK) {
360360
case SelfAccessKind::NonMutating: return OS << "'nonmutating'";
361361
case SelfAccessKind::Mutating: return OS << "'mutating'";
362-
case SelfAccessKind::__Consuming: return OS << "'__consuming'";
362+
case SelfAccessKind::Consuming: return OS << "'__consuming'";
363363
}
364364
llvm_unreachable("Unknown SelfAccessKind");
365365
}

branches/master-next/lib/SILGen/SILGenApply.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4277,7 +4277,7 @@ bool SILGenModule::shouldEmitSelfAsRValue(FuncDecl *fn, CanType selfType) {
42774277
switch (fn->getSelfAccessKind()) {
42784278
case SelfAccessKind::Mutating:
42794279
return false;
4280-
case SelfAccessKind::__Consuming:
4280+
case SelfAccessKind::Consuming:
42814281
return true;
42824282
case SelfAccessKind::NonMutating:
42834283
// TODO: borrow 'self' for nonmutating methods on methods on value types.

branches/master-next/lib/SILOptimizer/Transforms/SimplifyCFG.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3156,6 +3156,11 @@ getSwitchEnumPred(SILBasicBlock *BB, SILBasicBlock *PostBB,
31563156

31573157
// Check if BB is reachable from multiple enum cases. This means that there is
31583158
// a single-branch block for each enum case which branch to BB.
3159+
// Usually in this case BB has no arguments. If there are any arguments, bail,
3160+
// because the argument may be used by other instructions.
3161+
if (BB->getNumArguments() != 0)
3162+
return nullptr;
3163+
31593164
SILBasicBlock *CommonPredPredBB = nullptr;
31603165
for (auto PredBB : BB->getPredecessorBlocks()) {
31613166
TermInst *PredTerm = PredBB->getTerminator();

branches/master-next/lib/Sema/TypeCheckAttr.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,7 @@ void AttributeEarlyChecker::visitMutationAttr(DeclAttribute *attr) {
268268
SelfAccessKind attrModifier;
269269
switch (attr->getKind()) {
270270
case DeclAttrKind::DAK_Consuming:
271-
attrModifier = SelfAccessKind::__Consuming;
271+
attrModifier = SelfAccessKind::Consuming;
272272
break;
273273
case DeclAttrKind::DAK_Mutating:
274274
attrModifier = SelfAccessKind::Mutating;
@@ -285,7 +285,7 @@ void AttributeEarlyChecker::visitMutationAttr(DeclAttribute *attr) {
285285
// 'mutating' and 'nonmutating' are not valid on types
286286
// with reference semantics.
287287
if (contextTy->hasReferenceSemantics()) {
288-
if (attrModifier != SelfAccessKind::__Consuming)
288+
if (attrModifier != SelfAccessKind::Consuming)
289289
diagnoseAndRemoveAttr(attr, diag::mutating_invalid_classes,
290290
attrModifier);
291291
}
@@ -314,9 +314,9 @@ void AttributeEarlyChecker::visitMutationAttr(DeclAttribute *attr) {
314314
}
315315

316316
if (auto *CSA = FD->getAttrs().getAttribute<ConsumingAttr>()) {
317-
if (attrModifier != SelfAccessKind::__Consuming) {
317+
if (attrModifier != SelfAccessKind::Consuming) {
318318
diagnoseAndRemoveAttr(CSA, diag::functions_mutating_and_not,
319-
SelfAccessKind::__Consuming, attrModifier);
319+
SelfAccessKind::Consuming, attrModifier);
320320
}
321321
}
322322
}

branches/master-next/lib/Sema/TypeCheckDecl.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1980,7 +1980,7 @@ SelfAccessKindRequest::evaluate(Evaluator &evaluator, FuncDecl *FD) const {
19801980
} else if (FD->getAttrs().hasAttribute<NonMutatingAttr>()) {
19811981
return SelfAccessKind::NonMutating;
19821982
} else if (FD->getAttrs().hasAttribute<ConsumingAttr>()) {
1983-
return SelfAccessKind::__Consuming;
1983+
return SelfAccessKind::Consuming;
19841984
}
19851985

19861986
if (auto *AD = dyn_cast<AccessorDecl>(FD)) {

branches/master-next/lib/Sema/TypeCheckProtocol.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2133,7 +2133,7 @@ diagnoseMatch(ModuleDecl *module, NormalProtocolConformance *conformance,
21332133
// FIXME: Could emit a Fix-It here.
21342134
diags.diagnose(match.Witness,
21352135
diag::protocol_witness_mutation_modifier_conflict,
2136-
SelfAccessKind::__Consuming);
2136+
SelfAccessKind::Consuming);
21372137
break;
21382138
case MatchKind::RethrowsConflict:
21392139
// FIXME: Could emit a Fix-It here.

branches/master-next/lib/Serialization/Deserialization.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2126,8 +2126,8 @@ getActualSelfAccessKind(uint8_t raw) {
21262126
return swift::SelfAccessKind::NonMutating;
21272127
case serialization::SelfAccessKind::Mutating:
21282128
return swift::SelfAccessKind::Mutating;
2129-
case serialization::SelfAccessKind::__Consuming:
2130-
return swift::SelfAccessKind::__Consuming;
2129+
case serialization::SelfAccessKind::Consuming:
2130+
return swift::SelfAccessKind::Consuming;
21312131
}
21322132
return None;
21332133
}

branches/master-next/lib/Serialization/Serialization.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1984,8 +1984,8 @@ getStableSelfAccessKind(swift::SelfAccessKind MM) {
19841984
return serialization::SelfAccessKind::NonMutating;
19851985
case swift::SelfAccessKind::Mutating:
19861986
return serialization::SelfAccessKind::Mutating;
1987-
case swift::SelfAccessKind::__Consuming:
1988-
return serialization::SelfAccessKind::__Consuming;
1987+
case swift::SelfAccessKind::Consuming:
1988+
return serialization::SelfAccessKind::Consuming;
19891989
}
19901990

19911991
llvm_unreachable("Unhandled StaticSpellingKind in switch.");

branches/master-next/test/SILOptimizer/simplify_cfg_args.sil

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -411,6 +411,47 @@ bb4(%20 : $Builtin.Int32): // Preds: bb1 bb2 bb3
411411
return %21 : $Int32
412412
}
413413

414+
enum TwoCases {
415+
case A
416+
case B
417+
}
418+
419+
struct S {
420+
var x: Builtin.Int32
421+
}
422+
423+
sil @useSandInt : $@convention(thin) (S, Builtin.Int32) -> ()
424+
425+
// CHECK-LABEL: sil @dont_opt_switch_enum_with_arg_bb
426+
sil @dont_opt_switch_enum_with_arg_bb : $@convention(thin) (TwoCases, S, S) -> Builtin.Int32 {
427+
bb0(%0 : $TwoCases, %1 : $S, %2 : $S):
428+
%3 = integer_literal $Builtin.Int32, 3
429+
%4 = integer_literal $Builtin.Int32, 4
430+
// CHECK: switch_enum
431+
switch_enum %0 : $TwoCases, case #TwoCases.A!enumelt: bb1, case #TwoCases.B!enumelt.1: bb2
432+
433+
bb1:
434+
br bb3(%1 : $S)
435+
436+
bb2:
437+
br bb3(%2 : $S)
438+
439+
bb3(%10 : $S):
440+
br bb4(%3 : $Builtin.Int32)
441+
442+
bb4(%20 : $Builtin.Int32):
443+
%11 = function_ref @useSandInt : $@convention(thin) (S, Builtin.Int32) -> ()
444+
%12 = apply %11(%10, %20) : $@convention(thin) (S, Builtin.Int32) -> ()
445+
cond_br undef, bb5, bb6
446+
447+
bb5:
448+
br bb4(%4 : $Builtin.Int32)
449+
450+
bb6:
451+
// CHECK: return
452+
return %20 : $Builtin.Int32
453+
}
454+
414455
enum E {
415456
case Nope, Yup(Builtin.Int1)
416457
}

branches/master-next/tools/swift-api-digester/ModuleAnalyzerNodes.cpp

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1330,15 +1330,20 @@ SDKNodeInitInfo::SDKNodeInitInfo(SDKContext &Ctx, ValueDecl *VD)
13301330
}
13311331
}
13321332

1333-
#define CASE(BASE, KIND, KEY) case BASE::KIND: KEY = #KIND; break;
13341333
if (auto *FD = dyn_cast<FuncDecl>(VD)) {
13351334
switch(FD->getSelfAccessKind()) {
1336-
CASE(SelfAccessKind, Mutating, FuncSelfKind)
1337-
CASE(SelfAccessKind, __Consuming, FuncSelfKind)
1338-
CASE(SelfAccessKind, NonMutating, FuncSelfKind)
1335+
case SelfAccessKind::Mutating:
1336+
FuncSelfKind = "Mutating";
1337+
break;
1338+
case SelfAccessKind::Consuming:
1339+
// FIXME: Stay consistent with earlier digests that had underscores here.
1340+
FuncSelfKind = "__Consuming";
1341+
break;
1342+
case SelfAccessKind::NonMutating:
1343+
FuncSelfKind = "NonMutating";
1344+
break;
13391345
}
13401346
}
1341-
#undef CASE
13421347

13431348
// Get enum raw type name if this is an enum.
13441349
if (auto *ED = dyn_cast<EnumDecl>(VD)) {

0 commit comments

Comments
 (0)