File: lifetime_dependence.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 (76 lines) | stat: -rw-r--r-- 4,278 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
// RUN: %target-sil-opt %s \
// RUN:   -enable-experimental-feature NonescapableTypes | %FileCheck %s

sil_stage canonical

import Builtin
import Swift

struct BufferView : ~Escapable {
  @_hasStorage let ptr: UnsafeRawBufferPointer { get }
  @_unsafeNonescapableResult @inlinable init(_ ptr: UnsafeRawBufferPointer)
  init(_ ptr: UnsafeRawBufferPointer, _ a: borrowing Array<Int>) -> _scope(a) Self
}

func derive(_ x: borrowing BufferView) -> _scope(x) BufferView

func consumeAndCreate(_ x: consuming BufferView) -> _inherit(x) BufferView

sil hidden [unsafe_nonescapable_result] @bufferviewinit1 : $@convention(method) (UnsafeRawBufferPointer, @thin BufferView.Type) -> @owned BufferView {
bb0(%0 : $UnsafeRawBufferPointer, %1 : $@thin BufferView.Type):
  %2 = alloc_stack [var_decl] $BufferView, var, name "self"
  debug_value %0 : $UnsafeRawBufferPointer, let, name "ptr", argno 1 
  %4 = begin_access [modify] [static] %2 : $*BufferView 
  %5 = struct_element_addr %4 : $*BufferView, #BufferView.ptr 
  store %0 to %5 : $*UnsafeRawBufferPointer       
  end_access %4 : $*BufferView                    
  %8 = struct $BufferView (%0 : $UnsafeRawBufferPointer) 
  destroy_addr %2 : $*BufferView                  
  dealloc_stack %2 : $*BufferView                 
  return %8 : $BufferView                         
} 

// CHECK-LABEL: sil hidden @bufferviewtest2 : $@convention(method) (UnsafeRawBufferPointer, @guaranteed Array<Int>, @thin BufferView.Type) -> _scope(1) @owned BufferView {
sil hidden @bufferviewtest2 : $@convention(method) (UnsafeRawBufferPointer, @guaranteed Array<Int>, @thin BufferView.Type) -> _scope(1) @owned BufferView {
bb0(%0 : $UnsafeRawBufferPointer, %1 : @noImplicitCopy $Array<Int>, %2 : $@thin BufferView.Type):
  %3 = alloc_stack [var_decl] $BufferView, var, name "self"
  %6 = begin_access [modify] [static] %3 : $*BufferView 
  %7 = struct_element_addr %6 : $*BufferView, #BufferView.ptr 
  store %0 to %7 : $*UnsafeRawBufferPointer       
  end_access %6 : $*BufferView                    
  %10 = struct $BufferView (%0 : $UnsafeRawBufferPointer) 
  destroy_addr %3 : $*BufferView                  
  dealloc_stack %3 : $*BufferView                 
  return %10 : $BufferView                        
} 

// CHECK-LABEL: sil hidden @derive : $@convention(thin) (@guaranteed BufferView) -> _scope(0) @owned BufferView {
sil hidden @derive : $@convention(thin) (@guaranteed BufferView) -> _scope(0) @owned BufferView {
bb0(%0 : @noImplicitCopy $BufferView):
  %2 = metatype $@thin BufferView.Type            
  %3 = struct_extract %0 : $BufferView, #BufferView.ptr 
  %4 = function_ref @bufferviewinit1 : $@convention(method) (UnsafeRawBufferPointer, @thin BufferView.Type) -> @owned BufferView 
  %5 = apply %4(%3, %2) : $@convention(method) (UnsafeRawBufferPointer, @thin BufferView.Type) -> @owned BufferView 
  return %5 : $BufferView                         
} 

// CHECK-LABEL: sil hidden @consumeAndCreate : $@convention(thin) (@owned BufferView) -> _inherit(0) @owned BufferView {
sil hidden @consumeAndCreate : $@convention(thin) (@owned BufferView) -> _inherit(0) @owned BufferView {
bb0(%0 : @noImplicitCopy @_eagerMove $BufferView):
  %1 = alloc_stack [var_decl] [moveable_value_debuginfo] $BufferView, var, name "x" 
  %2 = struct_extract %0 : $BufferView, #BufferView.ptr 
  %3 = struct_extract %2 : $UnsafeRawBufferPointer, #UnsafeRawBufferPointer._position 
  %4 = struct_extract %0 : $BufferView, #BufferView.ptr 
  %5 = struct_extract %4 : $UnsafeRawBufferPointer, #UnsafeRawBufferPointer._end 
  store %0 to %1 : $*BufferView                   
  %7 = metatype $@thin BufferView.Type            
  %8 = begin_access [read] [static] %1 : $*BufferView 
  %9 = struct $UnsafeRawBufferPointer (%3 : $Optional<UnsafeRawPointer>, %5 : $Optional<UnsafeRawPointer>) 
  end_access %8 : $*BufferView                    
  %11 = function_ref @bufferviewinit1 : $@convention(method) (UnsafeRawBufferPointer, @thin BufferView.Type) -> @owned BufferView 
  %12 = apply %11(%9, %7) : $@convention(method) (UnsafeRawBufferPointer, @thin BufferView.Type) -> @owned BufferView 
  destroy_addr %1 : $*BufferView                  
  dealloc_stack %1 : $*BufferView                 
  return %12 : $BufferView                        
}