File: guaranteed_chain.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 (112 lines) | stat: -rw-r--r-- 4,984 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
// RUN: %target-sil-opt -enable-sil-verify-all %s

sil_stage canonical

import Builtin

class C {}

struct PairC {
  var first: C
  var second: C
}

// Ensure that forwarding chains don't result in exponential run time.
//
sil [ossa] @testSSALongForwardingChain : $@convention(thin) (@guaranteed C) -> () {
bb0(%0 : @guaranteed $C):
  specify_test "ssa_liveness @trace[0]"
  debug_value [trace] %0 : $C
  %s0 = struct $PairC(%0 : $C, %0 : $C)
  %s0a = struct_extract %s0 : $PairC, #PairC.first
  %s0b = struct_extract %s0 : $PairC, #PairC.second
  %s1 = struct $PairC(%s0a : $C, %s0b : $C)
  %s1a = struct_extract %s1 : $PairC, #PairC.first
  %s1b = struct_extract %s1 : $PairC, #PairC.second
  %s2 = struct $PairC(%s1a : $C, %s1b : $C)
  %s2a = struct_extract %s2 : $PairC, #PairC.first
  %s2b = struct_extract %s2 : $PairC, #PairC.second
  %s3 = struct $PairC(%s2a : $C, %s2b : $C)
  %s3a = struct_extract %s3 : $PairC, #PairC.first
  %s3b = struct_extract %s3 : $PairC, #PairC.second
  %s4 = struct $PairC(%s3a : $C, %s3b : $C)
  %s4a = struct_extract %s4 : $PairC, #PairC.first
  %s4b = struct_extract %s4 : $PairC, #PairC.second
  %s5 = struct $PairC(%s4a : $C, %s4b : $C)
  %s5a = struct_extract %s5 : $PairC, #PairC.first
  %s5b = struct_extract %s5 : $PairC, #PairC.second
  %s6 = struct $PairC(%s5a : $C, %s5b : $C)
  %s6a = struct_extract %s6 : $PairC, #PairC.first
  %s6b = struct_extract %s6 : $PairC, #PairC.second
  %s7 = struct $PairC(%s6a : $C, %s6b : $C)
  %s7a = struct_extract %s7 : $PairC, #PairC.first
  %s7b = struct_extract %s7 : $PairC, #PairC.second
  %s8 = struct $PairC(%s7a : $C, %s7b : $C)
  %s8a = struct_extract %s8 : $PairC, #PairC.first
  %s8b = struct_extract %s8 : $PairC, #PairC.second
  %s9 = struct $PairC(%s8a : $C, %s8b : $C)
  %s9a = struct_extract %s9 : $PairC, #PairC.first
  %s9b = struct_extract %s9 : $PairC, #PairC.second
  %s10 = struct $PairC(%s9a : $C, %s9b : $C)
  %s10a = struct_extract %s10 : $PairC, #PairC.first
  %s10b = struct_extract %s10 : $PairC, #PairC.second
  %s11 = struct $PairC(%s10a : $C, %s10b : $C)
  %s11a = struct_extract %s11 : $PairC, #PairC.first
  %s11b = struct_extract %s11 : $PairC, #PairC.second
  %s12 = struct $PairC(%s11a : $C, %s11b : $C)
  %s12a = struct_extract %s12 : $PairC, #PairC.first
  %s12b = struct_extract %s12 : $PairC, #PairC.second
  %s13 = struct $PairC(%s12a : $C, %s12b : $C)
  %s13a = struct_extract %s13 : $PairC, #PairC.first
  %s13b = struct_extract %s13 : $PairC, #PairC.second
  %s14 = struct $PairC(%s13a : $C, %s13b : $C)
  %s14a = struct_extract %s14 : $PairC, #PairC.first
  %s14b = struct_extract %s14 : $PairC, #PairC.second
  %s15 = struct $PairC(%s14a : $C, %s14b : $C)
  %s15a = struct_extract %s15 : $PairC, #PairC.first
  %s15b = struct_extract %s15 : $PairC, #PairC.second
  %s16 = struct $PairC(%s15a : $C, %s15b : $C)
  %s16a = struct_extract %s16 : $PairC, #PairC.first
  %s16b = struct_extract %s16 : $PairC, #PairC.second
  %s17 = struct $PairC(%s16a : $C, %s16b : $C)
  %s17a = struct_extract %s17 : $PairC, #PairC.first
  %s17b = struct_extract %s17 : $PairC, #PairC.second
  %s18 = struct $PairC(%s17a : $C, %s17b : $C)
  %s18a = struct_extract %s18 : $PairC, #PairC.first
  %s18b = struct_extract %s18 : $PairC, #PairC.second
  %s19 = struct $PairC(%s18a : $C, %s18b : $C)
  %s19a = struct_extract %s19 : $PairC, #PairC.first
  %s19b = struct_extract %s19 : $PairC, #PairC.second
  %s20 = struct $PairC(%s19a : $C, %s19b : $C)
  %s20a = struct_extract %s20 : $PairC, #PairC.first
  %s20b = struct_extract %s20 : $PairC, #PairC.second
  %s21 = struct $PairC(%s20a : $C, %s20b : $C)
  %s21a = struct_extract %s21 : $PairC, #PairC.first
  %s21b = struct_extract %s21 : $PairC, #PairC.second
  %s22 = struct $PairC(%s21a : $C, %s21b : $C)
  %s22a = struct_extract %s22 : $PairC, #PairC.first
  %s22b = struct_extract %s22 : $PairC, #PairC.second
  %s23 = struct $PairC(%s22a : $C, %s22b : $C)
  %s23a = struct_extract %s23 : $PairC, #PairC.first
  %s23b = struct_extract %s23 : $PairC, #PairC.second
  %s24 = struct $PairC(%s23a : $C, %s23b : $C)
  %s24a = struct_extract %s24 : $PairC, #PairC.first
  %s24b = struct_extract %s24 : $PairC, #PairC.second
  %s25 = struct $PairC(%s24a : $C, %s24b : $C)
  %s25a = struct_extract %s25 : $PairC, #PairC.first
  %s25b = struct_extract %s25 : $PairC, #PairC.second
  %s26 = struct $PairC(%s25a : $C, %s25b : $C)
  %s26a = struct_extract %s26 : $PairC, #PairC.first
  %s26b = struct_extract %s26 : $PairC, #PairC.second
  %s27 = struct $PairC(%s26a : $C, %s26b : $C)
  %s27a = struct_extract %s27 : $PairC, #PairC.first
  %s27b = struct_extract %s27 : $PairC, #PairC.second
  %s28 = struct $PairC(%s27a : $C, %s27b : $C)
  %s28a = struct_extract %s28 : $PairC, #PairC.first
  %s28b = struct_extract %s28 : $PairC, #PairC.second
  %s29 = struct $PairC(%s28a : $C, %s28b : $C)
  %s29a = struct_extract %s29 : $PairC, #PairC.first
  %s29b = struct_extract %s29 : $PairC, #PairC.second
  %99 = tuple()
  return %99 : $()
}