1
1
// RUN: %target-sil-opt -enable-sil-verify-all %s -mem2reg | %FileCheck %s
2
2
3
3
import Builtin
4
- import Swift
5
4
6
5
//////////////////
7
6
// Declarations //
8
7
//////////////////
9
8
9
+ typealias AnyObject = Builtin.AnyObject
10
+
11
+ struct Int64 {
12
+ var _value : Builtin.Int64
13
+ }
14
+
15
+ struct Int {
16
+ var _value : Builtin.Int64
17
+ }
18
+
19
+ struct Bool {
20
+ var _value : Builtin.Int1
21
+ }
22
+
23
+ enum FakeOptional<T> {
24
+ case some(T)
25
+ case none
26
+ }
27
+
10
28
class Klass {}
11
29
12
30
struct SmallCodesizeStruct {
@@ -492,22 +510,22 @@ bb0:
492
510
// CHECK-LABEL: sil [ossa] @test_optional_in_multiple_blocks :
493
511
// CHECK-NOT: alloc_stack
494
512
// CHECK: } // end sil function 'test_optional_in_multiple_blocks'
495
- sil [ossa] @test_optional_in_multiple_blocks : $@convention(method) (@guaranteed Optional <Klass>) -> () {
496
- bb0(%0 : @guaranteed $Optional <Klass>):
497
- %1 = copy_value %0 : $Optional <Klass>
498
- %32 = alloc_stack $Optional <Klass>
499
- store %1 to [init] %32 : $*Optional <Klass>
500
- switch_enum %0 : $Optional <Klass>, case #Optional .some!enumelt: bb6, case #Optional .none!enumelt: bb5
513
+ sil [ossa] @test_optional_in_multiple_blocks : $@convention(method) (@guaranteed FakeOptional <Klass>) -> () {
514
+ bb0(%0 : @guaranteed $FakeOptional <Klass>):
515
+ %1 = copy_value %0 : $FakeOptional <Klass>
516
+ %32 = alloc_stack $FakeOptional <Klass>
517
+ store %1 to [init] %32 : $*FakeOptional <Klass>
518
+ switch_enum %0 : $FakeOptional <Klass>, case #FakeOptional .some!enumelt: bb6, case #FakeOptional .none!enumelt: bb5
501
519
502
520
bb5:
503
- dealloc_stack %32 : $*Optional <Klass>
521
+ dealloc_stack %32 : $*FakeOptional <Klass>
504
522
br bb7
505
523
506
524
bb6(%50 : @guaranteed $Klass):
507
- %53 = load [copy] %32 : $*Optional <Klass>
508
- destroy_value %53 : $Optional <Klass>
509
- destroy_addr %32 : $*Optional <Klass>
510
- dealloc_stack %32 : $*Optional <Klass>
525
+ %53 = load [copy] %32 : $*FakeOptional <Klass>
526
+ destroy_value %53 : $FakeOptional <Klass>
527
+ destroy_addr %32 : $*FakeOptional <Klass>
528
+ dealloc_stack %32 : $*FakeOptional <Klass>
511
529
br bb7
512
530
513
531
bb7:
@@ -518,22 +536,22 @@ bb7:
518
536
// CHECK-LABEL: sil [ossa] @test_optional_in_multiple_blocks_lexical :
519
537
// CHECK-NOT: alloc_stack
520
538
// CHECK: } // end sil function 'test_optional_in_multiple_blocks_lexical'
521
- sil [ossa] @test_optional_in_multiple_blocks_lexical : $@convention(method) (@guaranteed Optional <Klass>) -> () {
522
- bb0(%0 : @guaranteed $Optional <Klass>):
523
- %1 = copy_value %0 : $Optional <Klass>
524
- %32 = alloc_stack [lexical] $Optional <Klass>
525
- store %1 to [init] %32 : $*Optional <Klass>
526
- switch_enum %0 : $Optional <Klass>, case #Optional .some!enumelt: bb6, case #Optional .none!enumelt: bb5
539
+ sil [ossa] @test_optional_in_multiple_blocks_lexical : $@convention(method) (@guaranteed FakeOptional <Klass>) -> () {
540
+ bb0(%0 : @guaranteed $FakeOptional <Klass>):
541
+ %1 = copy_value %0 : $FakeOptional <Klass>
542
+ %32 = alloc_stack [lexical] $FakeOptional <Klass>
543
+ store %1 to [init] %32 : $*FakeOptional <Klass>
544
+ switch_enum %0 : $FakeOptional <Klass>, case #FakeOptional .some!enumelt: bb6, case #FakeOptional .none!enumelt: bb5
527
545
528
546
bb5:
529
- dealloc_stack %32 : $*Optional <Klass>
547
+ dealloc_stack %32 : $*FakeOptional <Klass>
530
548
br bb7
531
549
532
550
bb6(%50 : @guaranteed $Klass):
533
- %53 = load [copy] %32 : $*Optional <Klass>
534
- destroy_value %53 : $Optional <Klass>
535
- destroy_addr %32 : $*Optional <Klass>
536
- dealloc_stack %32 : $*Optional <Klass>
551
+ %53 = load [copy] %32 : $*FakeOptional <Klass>
552
+ destroy_value %53 : $FakeOptional <Klass>
553
+ destroy_addr %32 : $*FakeOptional <Klass>
554
+ dealloc_stack %32 : $*FakeOptional <Klass>
537
555
br bb7
538
556
539
557
bb7:
@@ -544,23 +562,23 @@ bb7:
544
562
// CHECK-LABEL: sil [ossa] @test_optional_in_multiple_blocks_lexical_storedvalue :
545
563
// CHECK-NOT: alloc_stack
546
564
// CHECK: } // end sil function 'test_optional_in_multiple_blocks_lexical_storedvalue'
547
- sil [ossa] @test_optional_in_multiple_blocks_lexical_storedvalue : $@convention(method) (@owned Optional <Klass>) -> () {
548
- bb0(%0 : @owned $Optional <Klass>):
549
- %1 = copy_value %0 : $Optional <Klass>
550
- %32 = alloc_stack $Optional <Klass>
551
- store %0 to [init] %32 : $*Optional <Klass>
552
- switch_enum %1 : $Optional <Klass>, case #Optional .some!enumelt: bb6, case #Optional .none!enumelt: bb5
565
+ sil [ossa] @test_optional_in_multiple_blocks_lexical_storedvalue : $@convention(method) (@owned FakeOptional <Klass>) -> () {
566
+ bb0(%0 : @owned $FakeOptional <Klass>):
567
+ %1 = copy_value %0 : $FakeOptional <Klass>
568
+ %32 = alloc_stack $FakeOptional <Klass>
569
+ store %0 to [init] %32 : $*FakeOptional <Klass>
570
+ switch_enum %1 : $FakeOptional <Klass>, case #FakeOptional .some!enumelt: bb6, case #FakeOptional .none!enumelt: bb5
553
571
554
572
bb5:
555
- dealloc_stack %32 : $*Optional <Klass>
573
+ dealloc_stack %32 : $*FakeOptional <Klass>
556
574
br bb7
557
575
558
576
bb6(%50 : @owned $Klass):
559
- %53 = load [copy] %32 : $*Optional <Klass>
560
- destroy_value %53 : $Optional <Klass>
577
+ %53 = load [copy] %32 : $*FakeOptional <Klass>
578
+ destroy_value %53 : $FakeOptional <Klass>
561
579
destroy_value %50 : $Klass
562
- destroy_addr %32 : $*Optional <Klass>
563
- dealloc_stack %32 : $*Optional <Klass>
580
+ destroy_addr %32 : $*FakeOptional <Klass>
581
+ dealloc_stack %32 : $*FakeOptional <Klass>
564
582
br bb7
565
583
566
584
bb7:
@@ -571,20 +589,20 @@ bb7:
571
589
// CHECK-LABEL: sil [ossa] @optimize_optional_in_single_block :
572
590
// CHECK-NOT: alloc_stack
573
591
// CHECK: } // end sil function 'optimize_optional_in_single_block'
574
- sil [ossa] @optimize_optional_in_single_block : $@convention(method) (@guaranteed Optional <Klass>) -> () {
575
- bb0(%0 : @guaranteed $Optional <Klass>):
576
- switch_enum %0 : $Optional <Klass>, case #Optional .some!enumelt: bb6, case #Optional .none!enumelt: bb5
592
+ sil [ossa] @optimize_optional_in_single_block : $@convention(method) (@guaranteed FakeOptional <Klass>) -> () {
593
+ bb0(%0 : @guaranteed $FakeOptional <Klass>):
594
+ switch_enum %0 : $FakeOptional <Klass>, case #FakeOptional .some!enumelt: bb6, case #FakeOptional .none!enumelt: bb5
577
595
578
596
bb5:
579
597
br bb7
580
598
581
599
bb6(%50 : @guaranteed $Klass):
582
- %32 = alloc_stack $Optional <Klass>
583
- %1 = copy_value %0 : $Optional <Klass>
584
- store %1 to [init] %32 : $*Optional <Klass>
585
- %53 = load [take] %32 : $*Optional <Klass>
586
- destroy_value %53 : $Optional <Klass>
587
- dealloc_stack %32 : $*Optional <Klass>
600
+ %32 = alloc_stack $FakeOptional <Klass>
601
+ %1 = copy_value %0 : $FakeOptional <Klass>
602
+ store %1 to [init] %32 : $*FakeOptional <Klass>
603
+ %53 = load [take] %32 : $*FakeOptional <Klass>
604
+ destroy_value %53 : $FakeOptional <Klass>
605
+ dealloc_stack %32 : $*FakeOptional <Klass>
588
606
br bb7
589
607
590
608
bb7:
0 commit comments