File: ranges.sil

package info (click to toggle)
swiftlang 6.0.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,519,992 kB
  • sloc: cpp: 9,107,863; ansic: 2,040,022; asm: 1,135,751; python: 296,500; objc: 82,456; f90: 60,502; lisp: 34,951; pascal: 19,946; sh: 18,133; perl: 7,482; ml: 4,937; javascript: 4,117; makefile: 3,840; awk: 3,535; xml: 914; fortran: 619; cs: 573; ruby: 573
file content (150 lines) | stat: -rw-r--r-- 4,145 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
// RUN: %target-sil-opt %s -dump-ranges -o /dev/null | %FileCheck %s

// REQUIRES: swift_in_compiler

sil_stage canonical

// CHECK-LABEL: Instruction range in basic_test:
// CHECK-NEXT: begin:      %3 = string_literal utf8 "begin"
// CHECK-NEXT: ends:       %7 = string_literal utf8 "end"
// CHECK-NEXT:             %15 = string_literal utf8 "end"
// CHECK-NEXT: exits:      %18 = string_literal utf8 "outside"
// CHECK-NEXT: interiors:  %14 = string_literal utf8 "interior"
// CHECK-NEXT:             %10 = string_literal utf8 "interior"
// CHECK-NEXT: Block range in basic_test:
// CHECK-NEXT: begin:     bb1
// CHECK-NEXT: range:     [bb1, bb3]
// CHECK-NEXT: inclrange: [bb2, bb1, bb4, bb3]
// CHECK-NEXT: ends:      [bb2, bb4]
// CHECK-NEXT: exits:     [bb5]
// CHECK-NEXT: interiors: [bb3]
// CHECK-NEXT: End function basic_test
sil @basic_test : $@convention(thin) () -> () {
bb0:
  %0 = string_literal utf8 "outside"
  br bb1
bb1:
  %2 = string_literal utf8 "outside"
  %3 = string_literal utf8 "begin"
  %4 = string_literal utf8 "inside"
  cond_br undef, bb2, bb3
bb2:
  %6 = string_literal utf8 "inside"
  %7 = string_literal utf8 "end"
  %8 = string_literal utf8 "outside"
  br bb6
bb3:
  %10 = string_literal utf8 "interior"
  %11 = string_literal utf8 "inside"
  cond_br undef, bb4, bb5
bb4:
  %13 = string_literal utf8 "inside"
  %14 = string_literal utf8 "interior"
  %15 = string_literal utf8 "end"
  %16 = string_literal utf8 "outside"
  br bb6
bb5:
  %18 = string_literal utf8 "outside"
  br bb6
bb6:
  %r = tuple()
  return %r : $()
}

// CHECK-LABEL: Instruction range in loops:
// CHECK-NEXT: begin:      %3 = string_literal utf8 "begin"
// CHECK-NEXT: ends:       %10 = string_literal utf8 "end"
// CHECK-NEXT: exits:      %12 = tuple ()
// CHECK-NEXT: interiors:
// CHECK-NEXT: Block range in loops:
// CHECK-NEXT: begin:     bb1
// CHECK-NEXT: range:     [bb5, bb3, bb2, bb4, bb1]
// CHECK-NEXT: inclrange: [bb6, bb5, bb3, bb2, bb4, bb1]
// CHECK-NEXT: ends:      [bb6]
// CHECK-NEXT: exits:     [bb7]
// CHECK-NEXT: interiors: []
// CHECK-NEXT: End function loops
sil @loops : $@convention(thin) () -> () {
bb0:
  %0 = string_literal utf8 "outside"
  br bb1
bb1:
  %2 = string_literal utf8 "outside"
  %3 = string_literal utf8 "begin"
  %4 = string_literal utf8 "inside"
  br bb2
bb2:
  cond_br undef, bb3, bb4
bb3:
  cond_br undef, bb5, bb7
bb4:
  br bb5
bb5:
  cond_br undef, bb2, bb6
bb6:
  %8 = string_literal utf8 "end"
  cond_br undef, bb1, bb7
bb7:
  %r = tuple()
  return %r : $()
}

// CHECK-LABEL: Instruction range in minimal:
// CHECK-NEXT: begin:      %0 = string_literal utf8 "begin"
// CHECK-NEXT: ends:       %1 = string_literal utf8 "end"
// CHECK-NEXT: exits:    
// CHECK-NEXT: interiors:
// CHECK-NEXT: Block range in minimal:
// CHECK-NEXT: begin:     bb0
// CHECK-NEXT: range:     []
// CHECK-NEXT: inclrange: [bb0]
// CHECK-NEXT: ends:      [bb0]
// CHECK-NEXT: exits:     []
// CHECK-NEXT: interiors: []
// CHECK-NEXT: End function minimal
sil @minimal : $@convention(thin) () -> () {
bb0:
  %0 = string_literal utf8 "begin"
  %1 = string_literal utf8 "end"
  %r = tuple()
  return %r : $()
}

// CHECK-LABEL: Instruction range in invalid:
// CHECK-NEXT: <invalid>
// CHECK:      Block range in invalid:
// CHECK-NEXT: <invalid>
// CHECK:      End function invalid
sil @invalid : $@convention(thin) () -> () {
bb0:
  cond_br undef, bb1, bb2
bb1:
  %1 = string_literal utf8 "begin"
  br bb3
bb2:
  br bb3
bb3:
  %4 = string_literal utf8 "end"
  %r = tuple()
  return %r : $()
}

// CHECK-LABEL:Instruction range in valid_blocks_invalid_instructions:
// CHECK-NEXT: <invalid>
// CHECK:      Block range in valid_blocks_invalid_instructions:
// CHECK-NEXT: begin:     bb0
// CHECK-NEXT: range:     []
// CHECK-NEXT: inclrange: [bb0]
// CHECK-NEXT: ends:      [bb0]
// CHECK-NEXT: exits:     []
// CHECK-NEXT: interiors: []
// CHECK-NEXT: End function valid_blocks_invalid_instructions
sil @valid_blocks_invalid_instructions : $@convention(thin) () -> () {
bb0:
  %0 = string_literal utf8 "end"
  %1 = string_literal utf8 "begin"
  %2 = string_literal utf8 "end"
  %r = tuple()
  return %r : $()
}