File: struct_layout.sil

package info (click to toggle)
swiftlang 6.1.3-4
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 2,791,644 kB
  • sloc: cpp: 9,901,738; ansic: 2,201,433; asm: 1,091,827; python: 308,252; objc: 82,166; f90: 80,126; lisp: 38,358; pascal: 25,559; sh: 20,429; ml: 5,058; perl: 4,745; makefile: 4,484; awk: 3,535; javascript: 3,018; xml: 918; fortran: 664; cs: 573; ruby: 396
file content (54 lines) | stat: -rw-r--r-- 1,428 bytes parent folder | download | duplicates (3)
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
// RUN: %target-swift-frontend %s -module-name main -emit-ir -o - | %FileCheck -check-prefix=%target-ptrsize  --check-prefix=CHECK %s

import Builtin
import Swift

// 64: %T4main14Rdar15410780_CV = type <{ %TSSSg }>
// 64: %TSSSg = type <{ [16 x i8] }>

// 64: @"$s4main14Rdar15410780_AVWV" = internal constant {{.*}} i64 257
// 64: @"$s4main14Rdar15410780_BVWV" = internal constant {{.*}} i64 258
// 64: @"$s4main14Rdar15410780_CVWV" = internal constant {{.*}} i64 16


// 32: %T4main14Rdar15410780_CV = type <{ %TSSSg }>
// 32: %TSSSg = type <{ [12 x i8] }>

// 32: @"$s4main14Rdar15410780_AVWV" = internal constant {{.*}} i32 257
// 32: @"$s4main14Rdar15410780_BVWV" = internal constant {{.*}} i32 258
// 32: @"$s4main14Rdar15410780_CVWV" = internal constant {{.*}} i32 12


// <rdar://problem/15410780>
struct Rdar15410780_A {
  var a: Builtin.Int2048
  var b: Int8
}

struct Rdar15410780_B {
  var c: Rdar15410780_A?
}

struct Rdar15410780_C {
  var d: String?
}

enum EmptyEnum {
  case A
}

struct S {
  @_hasStorage let x: Int
  @_hasStorage let e: EmptyEnum
}

// CHECK-LABEL: define {{.*}} @testOffsetOfEmptyType
// CHECK:         ret ptr null
// CHECK:       }
sil @testOffsetOfEmptyType : $@convention(thin) () -> Builtin.RawPointer {
bb0:
  %0 = base_addr_for_offset $*S
  %1 = struct_element_addr %0 : $*S, #S.e
  %2 = address_to_pointer %1 : $*EmptyEnum to $Builtin.RawPointer
  return %2 : $Builtin.RawPointer
}