// RUN: %target-sil-opt -assume-parsing-unqualified-ownership-sil %s -aa=typed-access-tb-aa -aa-dump -o /dev/null | %FileCheck %s

// REQUIRES: asserts

import Builtin

///////////////////////
// Type Declarations //
///////////////////////

class foo {
   deinit
  init()
}

class boo : foo {
   deinit
  override init()
}

class baz : foo {
   deinit
  override init()
}

class goo : boo {
   deinit
  override init()
}

sil @boo_init : $@convention(thin) (@thick boo.Type) -> @owned boo
sil @baz_init : $@convention(thin) (@thick baz.Type) -> @owned baz
sil @goo_init : $@convention(thin) (@thick goo.Type) -> @owned goo

// CHECK-LABEL: no_parent_child_relation_reftype_tests
// CHECK: PAIR #1.
// CHECK-NEXT:   %0 = alloc_stack $boo
// CHECK-NEXT:   %1 = alloc_stack $baz
// CHECK-NEXT: NoAlias
sil hidden @no_parent_child_relation_reftype_tests : $@convention(thin) () -> () {
bb0:
  %0 = alloc_stack $boo, var, name "a"                 // users: %5, %14
  %1 = alloc_stack $baz, var, name "b"                 // users: %9, %13
  %2 = function_ref @boo_init : $@convention(thin) (@thick boo.Type) -> @owned boo // user: %4
  %3 = metatype $@thick boo.Type                  // user: %4
  %4 = apply %2(%3) : $@convention(thin) (@thick boo.Type) -> @owned boo // users: %5, %11
  store %4 to %0 : $*boo                        // id: %5
  %6 = function_ref @baz_init : $@convention(thin) (@thick baz.Type) -> @owned baz // user: %8
  %7 = metatype $@thick baz.Type                  // user: %8
  %8 = apply %6(%7) : $@convention(thin) (@thick baz.Type) -> @owned baz // users: %9, %10
  store %8 to %1 : $*baz                        // id: %9
  strong_release %8 : $baz                        // id: %10
  strong_release %4 : $boo                        // id: %11
  %12 = tuple ()                                  // user: %15
  dealloc_stack %1 : $*baz       // id: %13
  dealloc_stack %0 : $*boo       // id: %14
  return %12 : $()                                // id: %15
}

// CHECK-LABEL: with_parent_child_relation_reftype_tests

// CHECK: PAIR #33.
// CHECK-NEXT:   %4 = apply %2(%3) : $@convention(thin) (@thick boo.Type) -> @owned boo
// CHECK-NEXT:   %8 = apply %6(%7) : $@convention(thin) (@thick goo.Type) -> @owned goo
// CHECK-NEXT: MayAlias
sil hidden @with_parent_child_relation_reftype_tests : $@convention(thin) () -> () {
bb0:
  %0 = alloc_stack $boo, var, name "a"                 // users: %5, %14
  %1 = alloc_stack $goo, var, name "b"                 // users: %9, %13
  %2 = function_ref @boo_init : $@convention(thin) (@thick boo.Type) -> @owned boo // user: %4
  %3 = metatype $@thick boo.Type                  // user: %4
  %4 = apply %2(%3) : $@convention(thin) (@thick boo.Type) -> @owned boo // users: %5, %11
  store %4 to %0 : $*boo                        // id: %5
  %6 = function_ref @goo_init : $@convention(thin) (@thick goo.Type) -> @owned goo // user: %8
  %7 = metatype $@thick goo.Type                  // user: %8
  %8 = apply %6(%7) : $@convention(thin) (@thick goo.Type) -> @owned goo // users: %9, %10
  store %8 to %1 : $*goo                        // id: %9
  strong_release %8 : $goo                        // id: %10
  strong_release %4 : $boo                        // id: %11
  %12 = tuple ()                                  // user: %15
  dealloc_stack %1 : $*goo       // id: %13
  dealloc_stack %0 : $*boo       // id: %14
  return %12 : $()                                // id: %15
}

// CHECK-LABEL: @builtin_test

// Check that a raw pointer address may alias everything.
// CHECK: PAIR #134.
// CHECK-NEXT:   %7 = project_box %0 : $@box Builtin.RawPointer, 0
// CHECK-NEXT:   %8 = project_box %1 : $@box Builtin.NativeObject, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #135.
// CHECK-NEXT:   %7 = project_box %0 : $@box Builtin.RawPointer, 0
// CHECK-NEXT:   %9 = project_box %2 : $@box Builtin.UnknownObject, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #136.
// CHECK-NEXT:   %7 = project_box %0 : $@box Builtin.RawPointer, 0
// CHECK-NEXT:   %10 = project_box %3 : $@box Builtin.Int8, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #137.
// CHECK-NEXT:   %7 = project_box %0 : $@box Builtin.RawPointer, 0
// CHECK-NEXT:   %11 = project_box %4 : $@box Builtin.Int32, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #138.
// CHECK-NEXT:   %7 = project_box %0 : $@box Builtin.RawPointer, 0
// CHECK-NEXT:   %12 = project_box %5 : $@box Builtin.FPIEEE32, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #139.
// CHECK-NEXT:   %7 = project_box %0 : $@box Builtin.RawPointer, 0
// CHECK-NEXT:   %13 = project_box %6 : $@box Builtin.FPIEEE64, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #140.
// CHECK-NEXT:   %7 = project_box %0 : $@box Builtin.RawPointer, 0
// CHECK-NEXT:   %14 = project_box %0 : $@box Builtin.RawPointer, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #141.
// CHECK-NEXT:   %7 = project_box %0 : $@box Builtin.RawPointer, 0
// CHECK-NEXT:   %15 = project_box %1 : $@box Builtin.NativeObject, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #142.
// CHECK-NEXT:   %7 = project_box %0 : $@box Builtin.RawPointer, 0
// CHECK-NEXT:   %16 = project_box %2 : $@box Builtin.UnknownObject, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #143.
// CHECK-NEXT:   %7 = project_box %0 : $@box Builtin.RawPointer, 0
// CHECK-NEXT:   %17 = project_box %3 : $@box Builtin.Int8, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #144.
// CHECK-NEXT:   %7 = project_box %0 : $@box Builtin.RawPointer, 0
// CHECK-NEXT:   %18 = project_box %4 : $@box Builtin.Int32, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #145.
// CHECK-NEXT:   %7 = project_box %0 : $@box Builtin.RawPointer, 0
// CHECK-NEXT:   %19 = project_box %5 : $@box Builtin.FPIEEE32, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #146.
// CHECK-NEXT:   %7 = project_box %0 : $@box Builtin.RawPointer, 0
// CHECK-NEXT:   %20 = project_box %6 : $@box Builtin.FPIEEE64, 0
// CHECK-NEXT: MayAlias

// Now check that a native object address may:
//
// 1. May alias raw pointer addresses.
// 2. Not alias an unknown object. Objective-C objects are allocated differently
// than Swift objects and may not alias.
// 3. Does not alias scalar addresses. This can only occur via inttoptr and the
// like. Since we are using type oracles we are allowed to make the assumption
// that this type of type punning can be ignored.
// 4. May alias addresses to other Builtin.NativeObjects

// CHECK: PAIR #149.
// CHECK-NEXT:   %8 = project_box %1 : $@box Builtin.NativeObject, 0
// CHECK-NEXT:   %9 = project_box %2 : $@box Builtin.UnknownObject, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #150.
// CHECK-NEXT:   %8 = project_box %1 : $@box Builtin.NativeObject, 0
// CHECK-NEXT:   %10 = project_box %3 : $@box Builtin.Int8, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #151.
// CHECK-NEXT:   %8 = project_box %1 : $@box Builtin.NativeObject, 0
// CHECK-NEXT:   %11 = project_box %4 : $@box Builtin.Int32, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #152.
// CHECK-NEXT:   %8 = project_box %1 : $@box Builtin.NativeObject, 0
// CHECK-NEXT:   %12 = project_box %5 : $@box Builtin.FPIEEE32, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #153.
// CHECK-NEXT:   %8 = project_box %1 : $@box Builtin.NativeObject, 0
// CHECK-NEXT:   %13 = project_box %6 : $@box Builtin.FPIEEE64, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #154.
// CHECK-NEXT:   %8 = project_box %1 : $@box Builtin.NativeObject, 0
// CHECK-NEXT:   %14 = project_box %0 : $@box Builtin.RawPointer, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #155.
// CHECK-NEXT:   %8 = project_box %1 : $@box Builtin.NativeObject, 0
// CHECK-NEXT:   %15 = project_box %1 : $@box Builtin.NativeObject, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #156.
// CHECK-NEXT:   %8 = project_box %1 : $@box Builtin.NativeObject, 0
// CHECK-NEXT:   %16 = project_box %2 : $@box Builtin.UnknownObject, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #157.
// CHECK-NEXT:   %8 = project_box %1 : $@box Builtin.NativeObject, 0
// CHECK-NEXT:   %17 = project_box %3 : $@box Builtin.Int8, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #158.
// CHECK-NEXT:   %8 = project_box %1 : $@box Builtin.NativeObject, 0
// CHECK-NEXT:   %18 = project_box %4 : $@box Builtin.Int32, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #159.
// CHECK-NEXT:   %8 = project_box %1 : $@box Builtin.NativeObject, 0
// CHECK-NEXT:   %19 = project_box %5 : $@box Builtin.FPIEEE32, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #160.
// CHECK-NEXT:   %8 = project_box %1 : $@box Builtin.NativeObject, 0
// CHECK-NEXT:   %20 = project_box %6 : $@box Builtin.FPIEEE64, 0
// CHECK-NEXT: NoAlias

// Check that unknown object addresses may only alias raw pointer addresses and
// other unknown object addresses. Anything else should be no alias.
// CHECK: PAIR #163.
// CHECK-NEXT:   %9 = project_box %2 : $@box Builtin.UnknownObject, 0
// CHECK-NEXT:   %10 = project_box %3 : $@box Builtin.Int8, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #164.
// CHECK-NEXT:   %9 = project_box %2 : $@box Builtin.UnknownObject, 0
// CHECK-NEXT:   %11 = project_box %4 : $@box Builtin.Int32, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #165.
// CHECK-NEXT:   %9 = project_box %2 : $@box Builtin.UnknownObject, 0
// CHECK-NEXT:   %12 = project_box %5 : $@box Builtin.FPIEEE32, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #166.
// CHECK-NEXT:   %9 = project_box %2 : $@box Builtin.UnknownObject, 0
// CHECK-NEXT:   %13 = project_box %6 : $@box Builtin.FPIEEE64, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #167.
// CHECK-NEXT:   %9 = project_box %2 : $@box Builtin.UnknownObject, 0
// CHECK-NEXT:   %14 = project_box %0 : $@box Builtin.RawPointer, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #168.
// CHECK-NEXT:   %9 = project_box %2 : $@box Builtin.UnknownObject, 0
// CHECK-NEXT:   %15 = project_box %1 : $@box Builtin.NativeObject, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #169.
// CHECK-NEXT:   %9 = project_box %2 : $@box Builtin.UnknownObject, 0
// CHECK-NEXT:   %16 = project_box %2 : $@box Builtin.UnknownObject, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #170.
// CHECK-NEXT:   %9 = project_box %2 : $@box Builtin.UnknownObject, 0
// CHECK-NEXT:   %17 = project_box %3 : $@box Builtin.Int8, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #171.
// CHECK-NEXT:   %9 = project_box %2 : $@box Builtin.UnknownObject, 0
// CHECK-NEXT:   %18 = project_box %4 : $@box Builtin.Int32, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #172.
// CHECK-NEXT:   %9 = project_box %2 : $@box Builtin.UnknownObject, 0
// CHECK-NEXT:   %19 = project_box %5 : $@box Builtin.FPIEEE32, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #173.
// CHECK-NEXT:   %9 = project_box %2 : $@box Builtin.UnknownObject, 0
// CHECK-NEXT:   %20 = project_box %6 : $@box Builtin.FPIEEE64, 0
// CHECK-NEXT: NoAlias

// Next check that Int8 addresses can only alias Int8 addresses and raw
// pointers. This includes ensuring that Int8 cannot alias Int32 addresses.
// CHECK: PAIR #176.
// CHECK-NEXT:   %10 = project_box %3 : $@box Builtin.Int8, 0
// CHECK-NEXT:   %11 = project_box %4 : $@box Builtin.Int32, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #177.
// CHECK-NEXT:   %10 = project_box %3 : $@box Builtin.Int8, 0
// CHECK-NEXT:   %12 = project_box %5 : $@box Builtin.FPIEEE32, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #178.
// CHECK-NEXT:   %10 = project_box %3 : $@box Builtin.Int8, 0
// CHECK-NEXT:   %13 = project_box %6 : $@box Builtin.FPIEEE64, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #179.
// CHECK-NEXT:   %10 = project_box %3 : $@box Builtin.Int8, 0
// CHECK-NEXT:   %14 = project_box %0 : $@box Builtin.RawPointer, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #180.
// CHECK-NEXT:   %10 = project_box %3 : $@box Builtin.Int8, 0
// CHECK-NEXT:   %15 = project_box %1 : $@box Builtin.NativeObject, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #181.
// CHECK-NEXT:   %10 = project_box %3 : $@box Builtin.Int8, 0
// CHECK-NEXT:   %16 = project_box %2 : $@box Builtin.UnknownObject, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #182.
// CHECK-NEXT:   %10 = project_box %3 : $@box Builtin.Int8, 0
// CHECK-NEXT:   %17 = project_box %3 : $@box Builtin.Int8, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #183.
// CHECK-NEXT:   %10 = project_box %3 : $@box Builtin.Int8, 0
// CHECK-NEXT:   %18 = project_box %4 : $@box Builtin.Int32, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #184.
// CHECK-NEXT:   %10 = project_box %3 : $@box Builtin.Int8, 0
// CHECK-NEXT:   %19 = project_box %5 : $@box Builtin.FPIEEE32, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #185.
// CHECK-NEXT:   %10 = project_box %3 : $@box Builtin.Int8, 0
// CHECK-NEXT:   %20 = project_box %6 : $@box Builtin.FPIEEE64, 0
// CHECK-NEXT: NoAlias

// Finally conclude by checking that FPIEEE32 addresses only can alias raw
// pointer addresses and other FPIEEE32 addresses. Again this includes proving
// that FPIEEE64 addresses cannot alias FPIEEE32.
// CHECK: PAIR #199.
// CHECK-NEXT:   %12 = project_box %5 : $@box Builtin.FPIEEE32, 0
// CHECK-NEXT:   %13 = project_box %6 : $@box Builtin.FPIEEE64, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #200.
// CHECK-NEXT:   %12 = project_box %5 : $@box Builtin.FPIEEE32, 0
// CHECK-NEXT:   %14 = project_box %0 : $@box Builtin.RawPointer, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #201.
// CHECK-NEXT:   %12 = project_box %5 : $@box Builtin.FPIEEE32, 0
// CHECK-NEXT:   %15 = project_box %1 : $@box Builtin.NativeObject, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #202.
// CHECK-NEXT:   %12 = project_box %5 : $@box Builtin.FPIEEE32, 0
// CHECK-NEXT:   %16 = project_box %2 : $@box Builtin.UnknownObject, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #203.
// CHECK-NEXT:   %12 = project_box %5 : $@box Builtin.FPIEEE32, 0
// CHECK-NEXT:   %17 = project_box %3 : $@box Builtin.Int8, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #204.
// CHECK-NEXT:   %12 = project_box %5 : $@box Builtin.FPIEEE32, 0
// CHECK-NEXT:   %18 = project_box %4 : $@box Builtin.Int32, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #205.
// CHECK-NEXT:   %12 = project_box %5 : $@box Builtin.FPIEEE32, 0
// CHECK-NEXT:   %19 = project_box %5 : $@box Builtin.FPIEEE32, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #206.
// CHECK-NEXT:   %12 = project_box %5 : $@box Builtin.FPIEEE32, 0
// CHECK-NEXT:   %20 = project_box %6 : $@box Builtin.FPIEEE64, 0
// CHECK-NEXT: NoAlias

sil @builtin_test : $@convention(thin) () -> () {
bb0:
  %0 = alloc_box $@box Builtin.RawPointer
  %1 = alloc_box $@box Builtin.NativeObject
  %2 = alloc_box $@box Builtin.UnknownObject
  %3 = alloc_box $@box Builtin.Int8
  %4 = alloc_box $@box Builtin.Int32
  %5 = alloc_box $@box Builtin.FPIEEE32
  %6 = alloc_box $@box Builtin.FPIEEE64

  %7 = project_box %0 : $@box Builtin.RawPointer, 0
  %8 = project_box %1 : $@box Builtin.NativeObject, 0
  %9 = project_box %2 : $@box Builtin.UnknownObject, 0
  %10 = project_box %3 : $@box Builtin.Int8, 0
  %11 = project_box %4 : $@box Builtin.Int32, 0
  %12 = project_box %5 : $@box Builtin.FPIEEE32, 0
  %13 = project_box %6 : $@box Builtin.FPIEEE64, 0

  // This second block ensures that we gain the benefits of not repeating
  // already known values with being able to have associated with the output for
  // each type each of the items we are trying to check aliasing against. This
  // makes it simpler to write these tests.
  %14 = project_box %0 : $@box Builtin.RawPointer, 0
  %15 = project_box %1 : $@box Builtin.NativeObject, 0
  %16 = project_box %2 : $@box Builtin.UnknownObject, 0
  %17 = project_box %3 : $@box Builtin.Int8, 0
  %18 = project_box %4 : $@box Builtin.Int32, 0
  %19 = project_box %5 : $@box Builtin.FPIEEE32, 0
  %20 = project_box %6 : $@box Builtin.FPIEEE64, 0

  %21 = tuple()
  return %21 : $()
}

// Make sure that struct addresses:
//
// 1. Alias address types that they contain.
// 2. Do not alias address types that they do not contain.
// 3. Do not alias Builtin.ObjectPointers.
// 4. Aliases raw pointers.

// CHECK-LABEL: @struct_tests
// CHECK: PAIR #339.
// CHECK-NEXT:   %13 = project_box %6 : $@box STest_S3, 0
// CHECK-NEXT:   %14 = project_box %0 : $@box STest_S1, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #340.
// CHECK-NEXT:   %13 = project_box %6 : $@box STest_S3, 0
// CHECK-NEXT:   %15 = project_box %1 : $@box STest_S2, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #341.
// CHECK-NEXT:   %13 = project_box %6 : $@box STest_S3, 0
// CHECK-NEXT:   %16 = project_box %2 : $@box STest_E1, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #342.
// CHECK-NEXT:   %13 = project_box %6 : $@box STest_S3, 0
// CHECK-NEXT:   %17 = project_box %3 : $@box STest_E2, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #343.
// CHECK-NEXT:   %13 = project_box %6 : $@box STest_S3, 0
// CHECK-NEXT:   %18 = project_box %4 : $@box STest_C1, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #344.
// CHECK-NEXT:   %13 = project_box %6 : $@box STest_S3, 0
// CHECK-NEXT:   %19 = project_box %5 : $@box STest_C2, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #345.
// CHECK-NEXT:   %13 = project_box %6 : $@box STest_S3, 0
// CHECK-NEXT:   %20 = project_box %6 : $@box STest_S3, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #351.
// CHECK-NEXT:   %13 = project_box %6 : $@box STest_S3, 0
// CHECK-NEXT:   %26 = project_box %21 : $@box Builtin.RawPointer, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #352.
// CHECK-NEXT:   %13 = project_box %6 : $@box STest_S3, 0
// CHECK-NEXT:   %27 = project_box %22 : $@box Builtin.NativeObject, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #353.
// CHECK-NEXT:   %13 = project_box %6 : $@box STest_S3, 0
// CHECK-NEXT:   %28 = project_box %23 : $@box Builtin.UnknownObject, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #354.
// CHECK-NEXT:   %13 = project_box %6 : $@box STest_S3, 0
// CHECK-NEXT:   %29 = project_box %24 : $@box Builtin.Int32, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #355.
// CHECK-NEXT:   %13 = project_box %6 : $@box STest_S3, 0
// CHECK-NEXT:   %30 = project_box %25 : $@box Builtin.FPIEEE32, 0
// CHECK-NEXT: NoAlias

struct STest_S1 {
  var a : Builtin.Int32
}
struct STest_S2 {
  var b : Builtin.Int34
}
enum STest_E1 {
  case Yes(STest_S1)
  case No
}
enum STest_E2 {
  case Yes(STest_S2)
  case No
}
class STest_C1 {
  var a : Builtin.Int32

  init()
}
class STest_C2 {
  var a : Builtin.Int64

  init()
}
struct STest_S3 {
  var s : STest_S1
  var e : STest_E1
  var c : STest_C1
}

sil @struct_tests : $@convention(thin) () -> () {

  %0 = alloc_box $@box STest_S1
  %1 = alloc_box $@box STest_S2
  %2 = alloc_box $@box STest_E1
  %3 = alloc_box $@box STest_E2
  %4 = alloc_box $@box STest_C1
  %5 = alloc_box $@box STest_C2
  %6 = alloc_box $@box STest_S3

  %7 = project_box %0 : $@box STest_S1, 0
  %8 = project_box %1 : $@box STest_S2, 0
  %9 = project_box %2 : $@box STest_E1, 0
  %10 = project_box %3 : $@box STest_E2, 0
  %11 = project_box %4 : $@box STest_C1, 0
  %12 = project_box %5 : $@box STest_C2, 0
  %13 = project_box %6 : $@box STest_S3, 0

  %14 = project_box %0 : $@box STest_S1, 0
  %15 = project_box %1 : $@box STest_S2, 0
  %16 = project_box %2 : $@box STest_E1, 0
  %17 = project_box %3 : $@box STest_E2, 0
  %18 = project_box %4 : $@box STest_C1, 0
  %19 = project_box %5 : $@box STest_C2, 0
  %20 = project_box %6 : $@box STest_S3, 0

  %21 = alloc_box $@box Builtin.RawPointer
  %22 = alloc_box $@box Builtin.NativeObject
  %23 = alloc_box $@box Builtin.UnknownObject
  %24 = alloc_box $@box Builtin.Int32
  %25 = alloc_box $@box Builtin.FPIEEE32

  %26 = project_box %21 : $@box Builtin.RawPointer, 0
  %27 = project_box %22 : $@box Builtin.NativeObject, 0
  %28 = project_box %23 : $@box Builtin.UnknownObject, 0
  %29 = project_box %24 : $@box Builtin.Int32, 0
  %30 = project_box %25 : $@box Builtin.FPIEEE32, 0

  %9999 = tuple()
  return %9999 : $()
}

// CHECK-LABEL: @enum_tests
// CHECK: PAIR #339.
// CHECK-NEXT:   %13 = project_box %6 : $@box ETest_E3, 0
// CHECK-NEXT:   %14 = project_box %0 : $@box ETest_S1, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #340.
// CHECK-NEXT:   %13 = project_box %6 : $@box ETest_E3, 0
// CHECK-NEXT:   %15 = project_box %1 : $@box ETest_S2, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #341.
// CHECK-NEXT:   %13 = project_box %6 : $@box ETest_E3, 0
// CHECK-NEXT:   %16 = project_box %2 : $@box ETest_E1, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #342.
// CHECK-NEXT:   %13 = project_box %6 : $@box ETest_E3, 0
// CHECK-NEXT:   %17 = project_box %3 : $@box ETest_E2, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #343.
// CHECK-NEXT:   %13 = project_box %6 : $@box ETest_E3, 0
// CHECK-NEXT:   %18 = project_box %4 : $@box ETest_C1, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #344.
// CHECK-NEXT:   %13 = project_box %6 : $@box ETest_E3, 0
// CHECK-NEXT:   %19 = project_box %5 : $@box ETest_C2, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #345.
// CHECK-NEXT:   %13 = project_box %6 : $@box ETest_E3, 0
// CHECK-NEXT:   %20 = project_box %6 : $@box ETest_E3, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #351.
// CHECK-NEXT:   %13 = project_box %6 : $@box ETest_E3, 0
// CHECK-NEXT:   %26 = project_box %21 : $@box Builtin.RawPointer, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #352.
// CHECK-NEXT:   %13 = project_box %6 : $@box ETest_E3, 0
// CHECK-NEXT:   %27 = project_box %22 : $@box Builtin.NativeObject, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #353.
// CHECK-NEXT:   %13 = project_box %6 : $@box ETest_E3, 0
// CHECK-NEXT:   %28 = project_box %23 : $@box Builtin.UnknownObject, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #354.
// CHECK-NEXT:   %13 = project_box %6 : $@box ETest_E3, 0
// CHECK-NEXT:   %29 = project_box %24 : $@box Builtin.Int32, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #355.
// CHECK-NEXT:   %13 = project_box %6 : $@box ETest_E3, 0
// CHECK-NEXT:   %30 = project_box %25 : $@box Builtin.FPIEEE32, 0
// CHECK-NEXT: NoAlias

struct ETest_S1 {
  var a : Builtin.Int32
}
struct ETest_S2 {
  var b : Builtin.Int34
}
enum ETest_E1 {
  case Yes(ETest_S1)
  case No
}
enum ETest_E2 {
  case Yes(ETest_S2)
  case No
}
class ETest_C1 {
  var a : Builtin.Int32

  init()
}
class ETest_C2 {
  var a : Builtin.Int64

  init()
}
enum ETest_E3 {
  case S(ETest_S1)
  case E(ETest_E1)
  case C(ETest_C1)
  case Unknown
}

sil @enum_tests : $@convention(thin) () -> () {
  %0 = alloc_box $@box ETest_S1
  %1 = alloc_box $@box ETest_S2
  %2 = alloc_box $@box ETest_E1
  %3 = alloc_box $@box ETest_E2
  %4 = alloc_box $@box ETest_C1
  %5 = alloc_box $@box ETest_C2
  %6 = alloc_box $@box ETest_E3

  %7 = project_box %0 : $@box ETest_S1, 0
  %8 = project_box %1 : $@box ETest_S2, 0
  %9 = project_box %2 : $@box ETest_E1, 0
  %10 = project_box %3 : $@box ETest_E2, 0
  %11 = project_box %4 : $@box ETest_C1, 0
  %12 = project_box %5 : $@box ETest_C2, 0
  %13 = project_box %6 : $@box ETest_E3, 0

  %14 = project_box %0 : $@box ETest_S1, 0
  %15 = project_box %1 : $@box ETest_S2, 0
  %16 = project_box %2 : $@box ETest_E1, 0
  %17 = project_box %3 : $@box ETest_E2, 0
  %18 = project_box %4 : $@box ETest_C1, 0
  %19 = project_box %5 : $@box ETest_C2, 0
  %20 = project_box %6 : $@box ETest_E3, 0

  %21 = alloc_box $@box Builtin.RawPointer
  %22 = alloc_box $@box Builtin.NativeObject
  %23 = alloc_box $@box Builtin.UnknownObject
  %24 = alloc_box $@box Builtin.Int32
  %25 = alloc_box $@box Builtin.FPIEEE32

  %26 = project_box %21 : $@box Builtin.RawPointer, 0
  %27 = project_box %22 : $@box Builtin.NativeObject, 0
  %28 = project_box %23 : $@box Builtin.UnknownObject, 0
  %29 = project_box %24 : $@box Builtin.Int32, 0
  %30 = project_box %25 : $@box Builtin.FPIEEE32, 0

  %9999 = tuple()
  return %9999 : $()
}

// CHECK-LABEL: @class_tests

// CHECK: PAIR #72.
// CHECK-NEXT:   %3 = project_box %0 : $@box CTest_C1, 0
// CHECK-NEXT:   %6 = project_box %0 : $@box CTest_C1, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #73.
// CHECK-NEXT:   %3 = project_box %0 : $@box CTest_C1, 0
// CHECK-NEXT:   %7 = project_box %1 : $@box CTest_C2, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #74.
// CHECK-NEXT:   %3 = project_box %0 : $@box CTest_C1, 0
// CHECK-NEXT:   %8 = project_box %2 : $@box CTest_C3, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #82.
// CHECK-NEXT:   %3 = project_box %0 : $@box CTest_C1, 0
// CHECK-NEXT:   %16 = project_box %9 : $@box AnyObject, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #83.
// CHECK-NEXT:   %3 = project_box %0 : $@box CTest_C1, 0
// CHECK-NEXT:   %17 = project_box %10 : $@box Builtin.RawPointer, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #84.
// CHECK-NEXT:   %3 = project_box %0 : $@box CTest_C1, 0
// CHECK-NEXT:   %18 = project_box %11 : $@box Builtin.NativeObject, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #85.
// CHECK-NEXT:   %3 = project_box %0 : $@box CTest_C1, 0
// CHECK-NEXT:   %19 = project_box %12 : $@box Builtin.UnknownObject, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #86.
// CHECK-NEXT:   %3 = project_box %0 : $@box CTest_C1, 0
// CHECK-NEXT:   %20 = project_box %13 : $@box Builtin.Int8, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #87.
// CHECK-NEXT:   %3 = project_box %0 : $@box CTest_C1, 0
// CHECK-NEXT:   %21 = project_box %14 : $@box Builtin.Int32, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #88.
// CHECK-NEXT:   %3 = project_box %0 : $@box CTest_C1, 0
// CHECK-NEXT:   %22 = project_box %15 : $@box Builtin.FPIEEE32, 0
// CHECK-NEXT: NoAlias

// CHECK: PAIR #91.
// CHECK-NEXT:   %4 = project_box %1 : $@box CTest_C2, 0
// CHECK-NEXT:   %5 = project_box %2 : $@box CTest_C3, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #92.
// CHECK-NEXT:   %4 = project_box %1 : $@box CTest_C2, 0
// CHECK-NEXT:   %6 = project_box %0 : $@box CTest_C1, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #93.
// CHECK-NEXT:   %4 = project_box %1 : $@box CTest_C2, 0
// CHECK-NEXT:   %7 = project_box %1 : $@box CTest_C2, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #94.
// CHECK-NEXT:   %4 = project_box %1 : $@box CTest_C2, 0
// CHECK-NEXT:   %8 = project_box %2 : $@box CTest_C3, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #102.
// CHECK-NEXT:   %4 = project_box %1 : $@box CTest_C2, 0
// CHECK-NEXT:   %16 = project_box %9 : $@box AnyObject, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #103.
// CHECK-NEXT:   %4 = project_box %1 : $@box CTest_C2, 0
// CHECK-NEXT:   %17 = project_box %10 : $@box Builtin.RawPointer, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #104.
// CHECK-NEXT:   %4 = project_box %1 : $@box CTest_C2, 0
// CHECK-NEXT:   %18 = project_box %11 : $@box Builtin.NativeObject, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #105.
// CHECK-NEXT:   %4 = project_box %1 : $@box CTest_C2, 0
// CHECK-NEXT:   %19 = project_box %12 : $@box Builtin.UnknownObject, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #106.
// CHECK-NEXT:   %4 = project_box %1 : $@box CTest_C2, 0
// CHECK-NEXT:   %20 = project_box %13 : $@box Builtin.Int8, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #107.
// CHECK-NEXT:   %4 = project_box %1 : $@box CTest_C2, 0
// CHECK-NEXT:   %21 = project_box %14 : $@box Builtin.Int32, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #108.
// CHECK-NEXT:   %4 = project_box %1 : $@box CTest_C2, 0
// CHECK-NEXT:   %22 = project_box %15 : $@box Builtin.FPIEEE32, 0
// CHECK-NEXT: NoAlias

// CHECK: PAIR #111.
// CHECK-NEXT:   %5 = project_box %2 : $@box CTest_C3, 0
// CHECK-NEXT:   %6 = project_box %0 : $@box CTest_C1, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #112.
// CHECK-NEXT:   %5 = project_box %2 : $@box CTest_C3, 0
// CHECK-NEXT:   %7 = project_box %1 : $@box CTest_C2, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #113.
// CHECK-NEXT:   %5 = project_box %2 : $@box CTest_C3, 0
// CHECK-NEXT:   %8 = project_box %2 : $@box CTest_C3, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #121.
// CHECK-NEXT:   %5 = project_box %2 : $@box CTest_C3, 0
// CHECK-NEXT:   %16 = project_box %9 : $@box AnyObject, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #122.
// CHECK-NEXT:   %5 = project_box %2 : $@box CTest_C3, 0
// CHECK-NEXT:   %17 = project_box %10 : $@box Builtin.RawPointer, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #123.
// CHECK-NEXT:   %5 = project_box %2 : $@box CTest_C3, 0
// CHECK-NEXT:   %18 = project_box %11 : $@box Builtin.NativeObject, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #124.
// CHECK-NEXT:   %5 = project_box %2 : $@box CTest_C3, 0
// CHECK-NEXT:   %19 = project_box %12 : $@box Builtin.UnknownObject, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #125.
// CHECK-NEXT:   %5 = project_box %2 : $@box CTest_C3, 0
// CHECK-NEXT:   %20 = project_box %13 : $@box Builtin.Int8, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #126.
// CHECK-NEXT:   %5 = project_box %2 : $@box CTest_C3, 0
// CHECK-NEXT:   %21 = project_box %14 : $@box Builtin.Int32, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #127.
// CHECK-NEXT:   %5 = project_box %2 : $@box CTest_C3, 0
// CHECK-NEXT:   %22 = project_box %15 : $@box Builtin.FPIEEE32, 0
// CHECK-NEXT: NoAlias

class CTest_C1 {
  var x : Builtin.Int32

  init()
}

class CTest_C2 {
  var z : Builtin.FPIEEE32

  init()
}

class CTest_C3 : CTest_C1 {
  var y : Builtin.Int8

  override init()
}

protocol AnyObject {}

sil @class_tests : $@convention(thin) () -> () {
  %0 = alloc_box $@box CTest_C1
  %1 = alloc_box $@box CTest_C2
  %2 = alloc_box $@box CTest_C3

  %3 = project_box %0 : $@box CTest_C1, 0
  %4 = project_box %1 : $@box CTest_C2, 0
  %5 = project_box %2 : $@box CTest_C3, 0

  %6 = project_box %0 : $@box CTest_C1, 0
  %7 = project_box %1 : $@box CTest_C2, 0
  %8 = project_box %2 : $@box CTest_C3, 0

  %9 = alloc_box $@box AnyObject
  %10 = alloc_box $@box Builtin.RawPointer
  %11 = alloc_box $@box Builtin.NativeObject
  %12 = alloc_box $@box Builtin.UnknownObject
  %13 = alloc_box $@box Builtin.Int8
  %14 = alloc_box $@box Builtin.Int32
  %15 = alloc_box $@box Builtin.FPIEEE32

  %16 = project_box %9 : $@box AnyObject, 0
  %17 = project_box %10 : $@box Builtin.RawPointer, 0
  %18 = project_box %11 : $@box Builtin.NativeObject, 0
  %19 = project_box %12 : $@box Builtin.UnknownObject, 0
  %20 = project_box %13 : $@box Builtin.Int8, 0
  %21 = project_box %14 : $@box Builtin.Int32, 0
  %22 = project_box %15 : $@box Builtin.FPIEEE32, 0

  %9999 = tuple()
  return %9999 : $()
}

// CHECK-LABEL: @tuple_tests
// CHECK: PAIR #66.
// CHECK-NEXT:   %3 = project_box %0 : $@box (Builtin.RawPointer, Builtin.Int64), 0
// CHECK-NEXT:   %6 = project_box %0 : $@box (Builtin.RawPointer, Builtin.Int64), 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #67.
// CHECK-NEXT:   %3 = project_box %0 : $@box (Builtin.RawPointer, Builtin.Int64), 0
// CHECK-NEXT:   %7 = project_box %1 : $@box (TTest_S1, Builtin.Int64), 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #68.
// CHECK-NEXT:   %3 = project_box %0 : $@box (Builtin.RawPointer, Builtin.Int64), 0
// CHECK-NEXT:   %8 = project_box %2 : $@box (TTest_E1, Builtin.Int64), 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #75.
// CHECK-NEXT:   %3 = project_box %0 : $@box (Builtin.RawPointer, Builtin.Int64), 0
// CHECK-NEXT:   %15 = project_box %9 : $@box Builtin.RawPointer, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #76.
// CHECK-NEXT:   %3 = project_box %0 : $@box (Builtin.RawPointer, Builtin.Int64), 0
// CHECK-NEXT:   %16 = project_box %10 : $@box Builtin.NativeObject, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #77.
// CHECK-NEXT:   %3 = project_box %0 : $@box (Builtin.RawPointer, Builtin.Int64), 0
// CHECK-NEXT:   %17 = project_box %11 : $@box Builtin.UnknownObject, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #78.
// CHECK-NEXT:   %3 = project_box %0 : $@box (Builtin.RawPointer, Builtin.Int64), 0
// CHECK-NEXT:   %18 = project_box %12 : $@box Builtin.Int8, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #79.
// CHECK-NEXT:   %3 = project_box %0 : $@box (Builtin.RawPointer, Builtin.Int64), 0
// CHECK-NEXT:   %19 = project_box %13 : $@box Builtin.Int32, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #80.
// CHECK-NEXT:   %3 = project_box %0 : $@box (Builtin.RawPointer, Builtin.Int64), 0
// CHECK-NEXT:   %20 = project_box %14 : $@box Builtin.FPIEEE32, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #85.
// CHECK-NEXT:   %4 = project_box %1 : $@box (TTest_S1, Builtin.Int64), 0
// CHECK-NEXT:   %7 = project_box %1 : $@box (TTest_S1, Builtin.Int64), 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #86.
// CHECK-NEXT:   %4 = project_box %1 : $@box (TTest_S1, Builtin.Int64), 0
// CHECK-NEXT:   %8 = project_box %2 : $@box (TTest_E1, Builtin.Int64), 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #93.
// CHECK-NEXT:   %4 = project_box %1 : $@box (TTest_S1, Builtin.Int64), 0
// CHECK-NEXT:   %15 = project_box %9 : $@box Builtin.RawPointer, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #94.
// CHECK-NEXT:   %4 = project_box %1 : $@box (TTest_S1, Builtin.Int64), 0
// CHECK-NEXT:   %16 = project_box %10 : $@box Builtin.NativeObject, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #95.
// CHECK-NEXT:   %4 = project_box %1 : $@box (TTest_S1, Builtin.Int64), 0
// CHECK-NEXT:   %17 = project_box %11 : $@box Builtin.UnknownObject, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #96.
// CHECK-NEXT:   %4 = project_box %1 : $@box (TTest_S1, Builtin.Int64), 0
// CHECK-NEXT:   %18 = project_box %12 : $@box Builtin.Int8, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #97.
// CHECK-NEXT:   %4 = project_box %1 : $@box (TTest_S1, Builtin.Int64), 0
// CHECK-NEXT:   %19 = project_box %13 : $@box Builtin.Int32, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #98.
// CHECK-NEXT:   %4 = project_box %1 : $@box (TTest_S1, Builtin.Int64), 0
// CHECK-NEXT:   %20 = project_box %14 : $@box Builtin.FPIEEE32, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #102.
// CHECK-NEXT:   %5 = project_box %2 : $@box (TTest_E1, Builtin.Int64), 0
// CHECK-NEXT:   %7 = project_box %1 : $@box (TTest_S1, Builtin.Int64), 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #103.
// CHECK-NEXT:   %5 = project_box %2 : $@box (TTest_E1, Builtin.Int64), 0
// CHECK-NEXT:   %8 = project_box %2 : $@box (TTest_E1, Builtin.Int64), 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #110.
// CHECK-NEXT:   %5 = project_box %2 : $@box (TTest_E1, Builtin.Int64), 0
// CHECK-NEXT:   %15 = project_box %9 : $@box Builtin.RawPointer, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #111.
// CHECK-NEXT:   %5 = project_box %2 : $@box (TTest_E1, Builtin.Int64), 0
// CHECK-NEXT:   %16 = project_box %10 : $@box Builtin.NativeObject, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #112.
// CHECK-NEXT:   %5 = project_box %2 : $@box (TTest_E1, Builtin.Int64), 0
// CHECK-NEXT:   %17 = project_box %11 : $@box Builtin.UnknownObject, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #113.
// CHECK-NEXT:   %5 = project_box %2 : $@box (TTest_E1, Builtin.Int64), 0
// CHECK-NEXT:   %18 = project_box %12 : $@box Builtin.Int8, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #114.
// CHECK-NEXT:   %5 = project_box %2 : $@box (TTest_E1, Builtin.Int64), 0
// CHECK-NEXT:   %19 = project_box %13 : $@box Builtin.Int32, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #115.
// CHECK-NEXT:   %5 = project_box %2 : $@box (TTest_E1, Builtin.Int64), 0
// CHECK-NEXT:   %20 = project_box %14 : $@box Builtin.FPIEEE32, 0
// CHECK-NEXT: NoAlias

struct TTest_S1 {
  var x : Builtin.Int32
}

enum TTest_E1 {
  case No
  case Yes(Builtin.Int8)
}

sil @tuple_tests : $@convention(thin) () -> () {
  %0 = alloc_box $@box (Builtin.RawPointer, Builtin.Int64)
  %1 = alloc_box $@box (TTest_S1, Builtin.Int64)
  %2 = alloc_box $@box (TTest_E1, Builtin.Int64)

  %3 = project_box %0 : $@box (Builtin.RawPointer, Builtin.Int64), 0
  %4 = project_box %1 : $@box (TTest_S1, Builtin.Int64), 0
  %5 = project_box %2 : $@box (TTest_E1, Builtin.Int64), 0

  %6 = project_box %0 : $@box (Builtin.RawPointer, Builtin.Int64), 0
  %7 = project_box %1 : $@box (TTest_S1, Builtin.Int64), 0
  %8 = project_box %2 : $@box (TTest_E1, Builtin.Int64), 0

  %9 = alloc_box $@box Builtin.RawPointer
  %10 = alloc_box $@box Builtin.NativeObject
  %11 = alloc_box $@box Builtin.UnknownObject
  %12 = alloc_box $@box Builtin.Int8
  %13 = alloc_box $@box Builtin.Int32
  %14 = alloc_box $@box Builtin.FPIEEE32

  %15 = project_box %9 : $@box Builtin.RawPointer, 0
  %16 = project_box %10 : $@box Builtin.NativeObject, 0
  %17 = project_box %11 : $@box Builtin.UnknownObject, 0
  %18 = project_box %12 : $@box Builtin.Int8, 0
  %19 = project_box %13 : $@box Builtin.Int32, 0
  %20 = project_box %14 : $@box Builtin.FPIEEE32, 0

  %9999 = tuple()
  return %9999 : $()
}

// Check that TBAA fails when the root is unchecked_addr_cast or
// pointer_to_address without [strict].
//
// CHECK-LABEL: @tbaa_dump
// CHECK:      PAIR #2.
// CHECK-NEXT:   %0 = argument of bb0 : $*Builtin.Int64
// CHECK-NEXT:   %3 = unchecked_addr_cast %0 : $*Builtin.Int64 to $*Builtin.Int32
// CHECK-NEXT: MayAlias
// CHECK:      PAIR #5.
// CHECK-NEXT:   %0 = argument of bb0 : $*Builtin.Int64
// CHECK-NEXT:   %7 = pointer_to_address %6 : $Builtin.RawPointer to [strict] $*Builtin.Int32
// CHECK-NEXT: NoAlias
// CHECK:      PAIR #6.
// CHECK-NEXT:   %0 = argument of bb0 : $*Builtin.Int64
// CHECK-NEXT:   %9 = pointer_to_address %6 : $Builtin.RawPointer to $*Builtin.Int32
// CHECK-NEXT: MayAlias
sil @tbaa_dump : $@convention(thin) (@in Builtin.Int64) -> Builtin.Int64 {
bb0(%0 : $*Builtin.Int64):
  %1 = integer_literal $Builtin.Int64, 42
  store %1 to %0 : $*Builtin.Int64
  %3 = unchecked_addr_cast %0 : $*Builtin.Int64 to $*Builtin.Int32
  %4 = integer_literal $Builtin.Int32, 0
  store %4 to %3 : $*Builtin.Int32
  %6 = address_to_pointer %0 : $*Builtin.Int64 to $Builtin.RawPointer
  %7 = pointer_to_address %6 : $Builtin.RawPointer to [strict] $*Builtin.Int32
  store %4 to %7 : $*Builtin.Int32
  %9 = pointer_to_address %6 : $Builtin.RawPointer to $*Builtin.Int32
  store %4 to %9 : $*Builtin.Int32
  %10 = load %0 : $*Builtin.Int64
  return %10 : $Builtin.Int64
}

// CHECK-LABEL: @test_project_box
// CHECK:      PAIR #10.
// CHECK-NEXT:   %2 = project_box %0 : $@box Builtin.Int32, 0
// CHECK-NEXT:   %3 = project_box %1 : $@box Builtin.Int64, 0
// CHECK-NEXT: NoAlias
sil @test_project_box : $@convention(thin) (@box Builtin.Int32, @box Builtin.Int64) -> () {
bb0(%0 : $@box Builtin.Int32, %1 : $@box Builtin.Int64):
  %2 = project_box %0 : $@box Builtin.Int32, 0
  %3 = project_box %1 : $@box Builtin.Int64, 0

  %r = tuple()
  return %r : $()
}

// CHECK-LABEL: @test_ref_tail_addr
// CHECK:      PAIR #10.
// CHECK-NEXT:   %2 = ref_element_addr %0 : $CTest_C1, #CTest_C1.x
// CHECK-NEXT:   %3 = ref_tail_addr %1 : $CTest_C1, $Builtin.Int16
// CHECK-NEXT: NoAlias
sil @test_ref_tail_addr : $@convention(thin) (CTest_C1, CTest_C1) -> () {
bb0(%0 : $CTest_C1, %1 : $CTest_C1):
  %2 = ref_element_addr %0 : $CTest_C1, #CTest_C1.x
  %3 = ref_tail_addr %1 : $CTest_C1, $Builtin.Int16

  %r = tuple()
  return %r : $()
}
