File tree Expand file tree Collapse file tree 6 files changed +28
-9
lines changed Expand file tree Collapse file tree 6 files changed +28
-9
lines changed Original file line number Diff line number Diff line change @@ -4003,7 +4003,11 @@ class SILVerifier : public SILVerifierBase<SILVerifier> {
4003
4003
" final component should match leaf value type of key path type" );
4004
4004
}
4005
4005
4006
- void verifyEntryPointArguments (SILBasicBlock *entry) {
4006
+ // This verifies that the entry block of a SIL function doesn't have
4007
+ // any predecessors and also verifies the entry point arguments.
4008
+ void verifyEntryBlock (SILBasicBlock *entry) {
4009
+ require (entry->pred_empty (), " entry block cannot have predecessors" );
4010
+
4007
4011
DEBUG (llvm::dbgs () << " Argument types for entry point BB:\n " ;
4008
4012
for (auto *arg
4009
4013
: make_range (entry->args_begin (), entry->args_end ()))
@@ -4384,7 +4388,7 @@ class SILVerifier : public SILVerifierBase<SILVerifier> {
4384
4388
}
4385
4389
4386
4390
// Otherwise, verify the body of the function.
4387
- verifyEntryPointArguments (&*F->getBlocks ().begin ());
4391
+ verifyEntryBlock (&*F->getBlocks ().begin ());
4388
4392
verifyEpilogBlocks (F);
4389
4393
verifyFlowSensitiveRules (F);
4390
4394
verifyBranches (F);
Original file line number Diff line number Diff line change @@ -99,7 +99,10 @@ class E : B { }
99
99
100
100
sil @exit : $@convention(thin) () -> Never {
101
101
bb0:
102
- br bb0
102
+ br bb1
103
+
104
+ bb1:
105
+ br bb1
103
106
}
104
107
105
108
// CHECK-LABEL: sil @removeTriviallyDeadInstructions
Original file line number Diff line number Diff line change 61
61
// loops.
62
62
// CHECK-LABEL: sil @dead3
63
63
sil @dead3 : $@convention(thin) () -> () {
64
- // CHECK: bb0
65
64
bb0:
65
+ // CHECK: bb0
66
+ br bb1
67
+ // CHECK: bb1
68
+ bb1:
66
69
// CHECK: integer_literal $Builtin.Int32, 0
70
+ // CHECK: br bb1
67
71
%0 = integer_literal $Builtin.Int32, 0
68
- br bb0
72
+ br bb1
69
73
}
70
74
71
75
// CHECK-LABEL: sil hidden @test_dce_bbargs
Original file line number Diff line number Diff line change @@ -131,7 +131,9 @@ class E : B { }
131
131
132
132
sil @exit : $@convention(thin) () -> Never {
133
133
bb0:
134
- br bb0
134
+ br bb1
135
+ bb1:
136
+ br bb1
135
137
}
136
138
137
139
// CHECK-LABEL: sil @removeTriviallyDeadInstructions
Original file line number Diff line number Diff line change 132
132
133
133
sil @exit : $@convention(thin) () -> Never {
134
134
bb0:
135
- br bb0
135
+ br bb1
136
+ bb1:
137
+ br bb1
136
138
}
137
139
138
140
// CHECK-LABEL: sil @removeTriviallyDeadInstructions
Original file line number Diff line number Diff line change @@ -562,10 +562,14 @@ bb6(%8 : $Int64):
562
562
563
563
// CHECK-LABEL: @infinite_loop
564
564
// CHECK: bb0
565
- // CHECK-NEXT: br bb0
565
+ // CHECK-NEXT: br bb1
566
+ // CHECK: bb1
567
+ // CHECK-NEXT: br bb1
566
568
sil @infinite_loop : $@convention(thin) () -> () {
567
569
bb0:
568
- br bb0
570
+ br bb1
571
+ bb1:
572
+ br bb1
569
573
}
570
574
571
575
import Builtin
You can’t perform that action at this time.
0 commit comments