// RUN: %target-sil-opt %s -aa-kind=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 : $<τ_0_0> { var τ_0_0 } <Builtin.RawPointer>, 0
// CHECK-NEXT:   %8 = project_box %1 : $<τ_0_0> { var τ_0_0 } <Builtin.NativeObject>, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #135.
// CHECK-NEXT:   %7 = project_box %0 : $<τ_0_0> { var τ_0_0 } <Builtin.RawPointer>, 0
// CHECK-NEXT:   %9 = project_box %2 : $<τ_0_0> { var τ_0_0 } <Builtin.UnknownObject>, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #136.
// CHECK-NEXT:   %7 = project_box %0 : $<τ_0_0> { var τ_0_0 } <Builtin.RawPointer>, 0
// CHECK-NEXT:   %10 = project_box %3 : $<τ_0_0> { var τ_0_0 } <Builtin.Int8>, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #137.
// CHECK-NEXT:   %7 = project_box %0 : $<τ_0_0> { var τ_0_0 } <Builtin.RawPointer>, 0
// CHECK-NEXT:   %11 = project_box %4 : $<τ_0_0> { var τ_0_0 } <Builtin.Int32>, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #138.
// CHECK-NEXT:   %7 = project_box %0 : $<τ_0_0> { var τ_0_0 } <Builtin.RawPointer>, 0
// CHECK-NEXT:   %12 = project_box %5 : $<τ_0_0> { var τ_0_0 } <Builtin.FPIEEE32>, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #139.
// CHECK-NEXT:   %7 = project_box %0 : $<τ_0_0> { var τ_0_0 } <Builtin.RawPointer>, 0
// CHECK-NEXT:   %13 = project_box %6 : $<τ_0_0> { var τ_0_0 } <Builtin.FPIEEE64>, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #140.
// CHECK-NEXT:   %7 = project_box %0 : $<τ_0_0> { var τ_0_0 } <Builtin.RawPointer>, 0
// CHECK-NEXT:   %14 = project_box %0 : $<τ_0_0> { var τ_0_0 } <Builtin.RawPointer>, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #141.
// CHECK-NEXT:   %7 = project_box %0 : $<τ_0_0> { var τ_0_0 } <Builtin.RawPointer>, 0
// CHECK-NEXT:   %15 = project_box %1 : $<τ_0_0> { var τ_0_0 } <Builtin.NativeObject>, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #142.
// CHECK-NEXT:   %7 = project_box %0 : $<τ_0_0> { var τ_0_0 } <Builtin.RawPointer>, 0
// CHECK-NEXT:   %16 = project_box %2 : $<τ_0_0> { var τ_0_0 } <Builtin.UnknownObject>, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #143.
// CHECK-NEXT:   %7 = project_box %0 : $<τ_0_0> { var τ_0_0 } <Builtin.RawPointer>, 0
// CHECK-NEXT:   %17 = project_box %3 : $<τ_0_0> { var τ_0_0 } <Builtin.Int8>, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #144.
// CHECK-NEXT:   %7 = project_box %0 : $<τ_0_0> { var τ_0_0 } <Builtin.RawPointer>, 0
// CHECK-NEXT:   %18 = project_box %4 : $<τ_0_0> { var τ_0_0 } <Builtin.Int32>, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #145.
// CHECK-NEXT:   %7 = project_box %0 : $<τ_0_0> { var τ_0_0 } <Builtin.RawPointer>, 0
// CHECK-NEXT:   %19 = project_box %5 : $<τ_0_0> { var τ_0_0 } <Builtin.FPIEEE32>, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #146.
// CHECK-NEXT:   %7 = project_box %0 : $<τ_0_0> { var τ_0_0 } <Builtin.RawPointer>, 0
// CHECK-NEXT:   %20 = project_box %6 : $<τ_0_0> { var τ_0_0 } <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 : $<τ_0_0> { var τ_0_0 } <Builtin.NativeObject>, 0
// CHECK-NEXT:   %9 = project_box %2 : $<τ_0_0> { var τ_0_0 } <Builtin.UnknownObject>, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #150.
// CHECK-NEXT:   %8 = project_box %1 : $<τ_0_0> { var τ_0_0 } <Builtin.NativeObject>, 0
// CHECK-NEXT:   %10 = project_box %3 : $<τ_0_0> { var τ_0_0 } <Builtin.Int8>, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #151.
// CHECK-NEXT:   %8 = project_box %1 : $<τ_0_0> { var τ_0_0 } <Builtin.NativeObject>, 0
// CHECK-NEXT:   %11 = project_box %4 : $<τ_0_0> { var τ_0_0 } <Builtin.Int32>, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #152.
// CHECK-NEXT:   %8 = project_box %1 : $<τ_0_0> { var τ_0_0 } <Builtin.NativeObject>, 0
// CHECK-NEXT:   %12 = project_box %5 : $<τ_0_0> { var τ_0_0 } <Builtin.FPIEEE32>, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #153.
// CHECK-NEXT:   %8 = project_box %1 : $<τ_0_0> { var τ_0_0 } <Builtin.NativeObject>, 0
// CHECK-NEXT:   %13 = project_box %6 : $<τ_0_0> { var τ_0_0 } <Builtin.FPIEEE64>, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #154.
// CHECK-NEXT:   %8 = project_box %1 : $<τ_0_0> { var τ_0_0 } <Builtin.NativeObject>, 0
// CHECK-NEXT:   %14 = project_box %0 : $<τ_0_0> { var τ_0_0 } <Builtin.RawPointer>, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #155.
// CHECK-NEXT:   %8 = project_box %1 : $<τ_0_0> { var τ_0_0 } <Builtin.NativeObject>, 0
// CHECK-NEXT:   %15 = project_box %1 : $<τ_0_0> { var τ_0_0 } <Builtin.NativeObject>, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #156.
// CHECK-NEXT:   %8 = project_box %1 : $<τ_0_0> { var τ_0_0 } <Builtin.NativeObject>, 0
// CHECK-NEXT:   %16 = project_box %2 : $<τ_0_0> { var τ_0_0 } <Builtin.UnknownObject>, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #157.
// CHECK-NEXT:   %8 = project_box %1 : $<τ_0_0> { var τ_0_0 } <Builtin.NativeObject>, 0
// CHECK-NEXT:   %17 = project_box %3 : $<τ_0_0> { var τ_0_0 } <Builtin.Int8>, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #158.
// CHECK-NEXT:   %8 = project_box %1 : $<τ_0_0> { var τ_0_0 } <Builtin.NativeObject>, 0
// CHECK-NEXT:   %18 = project_box %4 : $<τ_0_0> { var τ_0_0 } <Builtin.Int32>, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #159.
// CHECK-NEXT:   %8 = project_box %1 : $<τ_0_0> { var τ_0_0 } <Builtin.NativeObject>, 0
// CHECK-NEXT:   %19 = project_box %5 : $<τ_0_0> { var τ_0_0 } <Builtin.FPIEEE32>, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #160.
// CHECK-NEXT:   %8 = project_box %1 : $<τ_0_0> { var τ_0_0 } <Builtin.NativeObject>, 0
// CHECK-NEXT:   %20 = project_box %6 : $<τ_0_0> { var τ_0_0 } <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 : $<τ_0_0> { var τ_0_0 } <Builtin.UnknownObject>, 0
// CHECK-NEXT:   %10 = project_box %3 : $<τ_0_0> { var τ_0_0 } <Builtin.Int8>, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #164.
// CHECK-NEXT:   %9 = project_box %2 : $<τ_0_0> { var τ_0_0 } <Builtin.UnknownObject>, 0
// CHECK-NEXT:   %11 = project_box %4 : $<τ_0_0> { var τ_0_0 } <Builtin.Int32>, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #165.
// CHECK-NEXT:   %9 = project_box %2 : $<τ_0_0> { var τ_0_0 } <Builtin.UnknownObject>, 0
// CHECK-NEXT:   %12 = project_box %5 : $<τ_0_0> { var τ_0_0 } <Builtin.FPIEEE32>, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #166.
// CHECK-NEXT:   %9 = project_box %2 : $<τ_0_0> { var τ_0_0 } <Builtin.UnknownObject>, 0
// CHECK-NEXT:   %13 = project_box %6 : $<τ_0_0> { var τ_0_0 } <Builtin.FPIEEE64>, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #167.
// CHECK-NEXT:   %9 = project_box %2 : $<τ_0_0> { var τ_0_0 } <Builtin.UnknownObject>, 0
// CHECK-NEXT:   %14 = project_box %0 : $<τ_0_0> { var τ_0_0 } <Builtin.RawPointer>, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #168.
// CHECK-NEXT:   %9 = project_box %2 : $<τ_0_0> { var τ_0_0 } <Builtin.UnknownObject>, 0
// CHECK-NEXT:   %15 = project_box %1 : $<τ_0_0> { var τ_0_0 } <Builtin.NativeObject>, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #169.
// CHECK-NEXT:   %9 = project_box %2 : $<τ_0_0> { var τ_0_0 } <Builtin.UnknownObject>, 0
// CHECK-NEXT:   %16 = project_box %2 : $<τ_0_0> { var τ_0_0 } <Builtin.UnknownObject>, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #170.
// CHECK-NEXT:   %9 = project_box %2 : $<τ_0_0> { var τ_0_0 } <Builtin.UnknownObject>, 0
// CHECK-NEXT:   %17 = project_box %3 : $<τ_0_0> { var τ_0_0 } <Builtin.Int8>, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #171.
// CHECK-NEXT:   %9 = project_box %2 : $<τ_0_0> { var τ_0_0 } <Builtin.UnknownObject>, 0
// CHECK-NEXT:   %18 = project_box %4 : $<τ_0_0> { var τ_0_0 } <Builtin.Int32>, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #172.
// CHECK-NEXT:   %9 = project_box %2 : $<τ_0_0> { var τ_0_0 } <Builtin.UnknownObject>, 0
// CHECK-NEXT:   %19 = project_box %5 : $<τ_0_0> { var τ_0_0 } <Builtin.FPIEEE32>, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #173.
// CHECK-NEXT:   %9 = project_box %2 : $<τ_0_0> { var τ_0_0 } <Builtin.UnknownObject>, 0
// CHECK-NEXT:   %20 = project_box %6 : $<τ_0_0> { var τ_0_0 } <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 : $<τ_0_0> { var τ_0_0 } <Builtin.Int8>, 0
// CHECK-NEXT:   %11 = project_box %4 : $<τ_0_0> { var τ_0_0 } <Builtin.Int32>, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #177.
// CHECK-NEXT:   %10 = project_box %3 : $<τ_0_0> { var τ_0_0 } <Builtin.Int8>, 0
// CHECK-NEXT:   %12 = project_box %5 : $<τ_0_0> { var τ_0_0 } <Builtin.FPIEEE32>, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #178.
// CHECK-NEXT:   %10 = project_box %3 : $<τ_0_0> { var τ_0_0 } <Builtin.Int8>, 0
// CHECK-NEXT:   %13 = project_box %6 : $<τ_0_0> { var τ_0_0 } <Builtin.FPIEEE64>, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #179.
// CHECK-NEXT:   %10 = project_box %3 : $<τ_0_0> { var τ_0_0 } <Builtin.Int8>, 0
// CHECK-NEXT:   %14 = project_box %0 : $<τ_0_0> { var τ_0_0 } <Builtin.RawPointer>, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #180.
// CHECK-NEXT:   %10 = project_box %3 : $<τ_0_0> { var τ_0_0 } <Builtin.Int8>, 0
// CHECK-NEXT:   %15 = project_box %1 : $<τ_0_0> { var τ_0_0 } <Builtin.NativeObject>, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #181.
// CHECK-NEXT:   %10 = project_box %3 : $<τ_0_0> { var τ_0_0 } <Builtin.Int8>, 0
// CHECK-NEXT:   %16 = project_box %2 : $<τ_0_0> { var τ_0_0 } <Builtin.UnknownObject>, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #182.
// CHECK-NEXT:   %10 = project_box %3 : $<τ_0_0> { var τ_0_0 } <Builtin.Int8>, 0
// CHECK-NEXT:   %17 = project_box %3 : $<τ_0_0> { var τ_0_0 } <Builtin.Int8>, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #183.
// CHECK-NEXT:   %10 = project_box %3 : $<τ_0_0> { var τ_0_0 } <Builtin.Int8>, 0
// CHECK-NEXT:   %18 = project_box %4 : $<τ_0_0> { var τ_0_0 } <Builtin.Int32>, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #184.
// CHECK-NEXT:   %10 = project_box %3 : $<τ_0_0> { var τ_0_0 } <Builtin.Int8>, 0
// CHECK-NEXT:   %19 = project_box %5 : $<τ_0_0> { var τ_0_0 } <Builtin.FPIEEE32>, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #185.
// CHECK-NEXT:   %10 = project_box %3 : $<τ_0_0> { var τ_0_0 } <Builtin.Int8>, 0
// CHECK-NEXT:   %20 = project_box %6 : $<τ_0_0> { var τ_0_0 } <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 : $<τ_0_0> { var τ_0_0 } <Builtin.FPIEEE32>, 0
// CHECK-NEXT:   %13 = project_box %6 : $<τ_0_0> { var τ_0_0 } <Builtin.FPIEEE64>, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #200.
// CHECK-NEXT:   %12 = project_box %5 : $<τ_0_0> { var τ_0_0 } <Builtin.FPIEEE32>, 0
// CHECK-NEXT:   %14 = project_box %0 : $<τ_0_0> { var τ_0_0 } <Builtin.RawPointer>, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #201.
// CHECK-NEXT:   %12 = project_box %5 : $<τ_0_0> { var τ_0_0 } <Builtin.FPIEEE32>, 0
// CHECK-NEXT:   %15 = project_box %1 : $<τ_0_0> { var τ_0_0 } <Builtin.NativeObject>, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #202.
// CHECK-NEXT:   %12 = project_box %5 : $<τ_0_0> { var τ_0_0 } <Builtin.FPIEEE32>, 0
// CHECK-NEXT:   %16 = project_box %2 : $<τ_0_0> { var τ_0_0 } <Builtin.UnknownObject>, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #203.
// CHECK-NEXT:   %12 = project_box %5 : $<τ_0_0> { var τ_0_0 } <Builtin.FPIEEE32>, 0
// CHECK-NEXT:   %17 = project_box %3 : $<τ_0_0> { var τ_0_0 } <Builtin.Int8>, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #204.
// CHECK-NEXT:   %12 = project_box %5 : $<τ_0_0> { var τ_0_0 } <Builtin.FPIEEE32>, 0
// CHECK-NEXT:   %18 = project_box %4 : $<τ_0_0> { var τ_0_0 } <Builtin.Int32>, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #205.
// CHECK-NEXT:   %12 = project_box %5 : $<τ_0_0> { var τ_0_0 } <Builtin.FPIEEE32>, 0
// CHECK-NEXT:   %19 = project_box %5 : $<τ_0_0> { var τ_0_0 } <Builtin.FPIEEE32>, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #206.
// CHECK-NEXT:   %12 = project_box %5 : $<τ_0_0> { var τ_0_0 } <Builtin.FPIEEE32>, 0
// CHECK-NEXT:   %20 = project_box %6 : $<τ_0_0> { var τ_0_0 } <Builtin.FPIEEE64>, 0
// CHECK-NEXT: NoAlias

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

  %7 = project_box %0 : $<τ_0_0> { var τ_0_0 } <Builtin.RawPointer>, 0
  %8 = project_box %1 : $<τ_0_0> { var τ_0_0 } <Builtin.NativeObject>, 0
  %9 = project_box %2 : $<τ_0_0> { var τ_0_0 } <Builtin.UnknownObject>, 0
  %10 = project_box %3 : $<τ_0_0> { var τ_0_0 } <Builtin.Int8>, 0
  %11 = project_box %4 : $<τ_0_0> { var τ_0_0 } <Builtin.Int32>, 0
  %12 = project_box %5 : $<τ_0_0> { var τ_0_0 } <Builtin.FPIEEE32>, 0
  %13 = project_box %6 : $<τ_0_0> { var τ_0_0 } <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 : $<τ_0_0> { var τ_0_0 } <Builtin.RawPointer>, 0
  %15 = project_box %1 : $<τ_0_0> { var τ_0_0 } <Builtin.NativeObject>, 0
  %16 = project_box %2 : $<τ_0_0> { var τ_0_0 } <Builtin.UnknownObject>, 0
  %17 = project_box %3 : $<τ_0_0> { var τ_0_0 } <Builtin.Int8>, 0
  %18 = project_box %4 : $<τ_0_0> { var τ_0_0 } <Builtin.Int32>, 0
  %19 = project_box %5 : $<τ_0_0> { var τ_0_0 } <Builtin.FPIEEE32>, 0
  %20 = project_box %6 : $<τ_0_0> { var τ_0_0 } <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 : $<τ_0_0> { var τ_0_0 } <STest_S3>, 0
// CHECK-NEXT:   %14 = project_box %0 : $<τ_0_0> { var τ_0_0 } <STest_S1>, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #340.
// CHECK-NEXT:   %13 = project_box %6 : $<τ_0_0> { var τ_0_0 } <STest_S3>, 0
// CHECK-NEXT:   %15 = project_box %1 : $<τ_0_0> { var τ_0_0 } <STest_S2>, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #341.
// CHECK-NEXT:   %13 = project_box %6 : $<τ_0_0> { var τ_0_0 } <STest_S3>, 0
// CHECK-NEXT:   %16 = project_box %2 : $<τ_0_0> { var τ_0_0 } <STest_E1>, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #342.
// CHECK-NEXT:   %13 = project_box %6 : $<τ_0_0> { var τ_0_0 } <STest_S3>, 0
// CHECK-NEXT:   %17 = project_box %3 : $<τ_0_0> { var τ_0_0 } <STest_E2>, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #343.
// CHECK-NEXT:   %13 = project_box %6 : $<τ_0_0> { var τ_0_0 } <STest_S3>, 0
// CHECK-NEXT:   %18 = project_box %4 : $<τ_0_0> { var τ_0_0 } <STest_C1>, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #344.
// CHECK-NEXT:   %13 = project_box %6 : $<τ_0_0> { var τ_0_0 } <STest_S3>, 0
// CHECK-NEXT:   %19 = project_box %5 : $<τ_0_0> { var τ_0_0 } <STest_C2>, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #345.
// CHECK-NEXT:   %13 = project_box %6 : $<τ_0_0> { var τ_0_0 } <STest_S3>, 0
// CHECK-NEXT:   %20 = project_box %6 : $<τ_0_0> { var τ_0_0 } <STest_S3>, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #351.
// CHECK-NEXT:   %13 = project_box %6 : $<τ_0_0> { var τ_0_0 } <STest_S3>, 0
// CHECK-NEXT:   %26 = project_box %21 : $<τ_0_0> { var τ_0_0 } <Builtin.RawPointer>, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #352.
// CHECK-NEXT:   %13 = project_box %6 : $<τ_0_0> { var τ_0_0 } <STest_S3>, 0
// CHECK-NEXT:   %27 = project_box %22 : $<τ_0_0> { var τ_0_0 } <Builtin.NativeObject>, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #353.
// CHECK-NEXT:   %13 = project_box %6 : $<τ_0_0> { var τ_0_0 } <STest_S3>, 0
// CHECK-NEXT:   %28 = project_box %23 : $<τ_0_0> { var τ_0_0 } <Builtin.UnknownObject>, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #354.
// CHECK-NEXT:   %13 = project_box %6 : $<τ_0_0> { var τ_0_0 } <STest_S3>, 0
// CHECK-NEXT:   %29 = project_box %24 : $<τ_0_0> { var τ_0_0 } <Builtin.Int32>, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #355.
// CHECK-NEXT:   %13 = project_box %6 : $<τ_0_0> { var τ_0_0 } <STest_S3>, 0
// CHECK-NEXT:   %30 = project_box %25 : $<τ_0_0> { var τ_0_0 } <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 $<τ_0_0> { var τ_0_0 } <STest_S1>
  %1 = alloc_box $<τ_0_0> { var τ_0_0 } <STest_S2>
  %2 = alloc_box $<τ_0_0> { var τ_0_0 } <STest_E1>
  %3 = alloc_box $<τ_0_0> { var τ_0_0 } <STest_E2>
  %4 = alloc_box $<τ_0_0> { var τ_0_0 } <STest_C1>
  %5 = alloc_box $<τ_0_0> { var τ_0_0 } <STest_C2>
  %6 = alloc_box $<τ_0_0> { var τ_0_0 } <STest_S3>

  %7 = project_box %0 : $<τ_0_0> { var τ_0_0 } <STest_S1>, 0
  %8 = project_box %1 : $<τ_0_0> { var τ_0_0 } <STest_S2>, 0
  %9 = project_box %2 : $<τ_0_0> { var τ_0_0 } <STest_E1>, 0
  %10 = project_box %3 : $<τ_0_0> { var τ_0_0 } <STest_E2>, 0
  %11 = project_box %4 : $<τ_0_0> { var τ_0_0 } <STest_C1>, 0
  %12 = project_box %5 : $<τ_0_0> { var τ_0_0 } <STest_C2>, 0
  %13 = project_box %6 : $<τ_0_0> { var τ_0_0 } <STest_S3>, 0

  %14 = project_box %0 : $<τ_0_0> { var τ_0_0 } <STest_S1>, 0
  %15 = project_box %1 : $<τ_0_0> { var τ_0_0 } <STest_S2>, 0
  %16 = project_box %2 : $<τ_0_0> { var τ_0_0 } <STest_E1>, 0
  %17 = project_box %3 : $<τ_0_0> { var τ_0_0 } <STest_E2>, 0
  %18 = project_box %4 : $<τ_0_0> { var τ_0_0 } <STest_C1>, 0
  %19 = project_box %5 : $<τ_0_0> { var τ_0_0 } <STest_C2>, 0
  %20 = project_box %6 : $<τ_0_0> { var τ_0_0 } <STest_S3>, 0

  %21 = alloc_box $<τ_0_0> { var τ_0_0 } <Builtin.RawPointer>
  %22 = alloc_box $<τ_0_0> { var τ_0_0 } <Builtin.NativeObject>
  %23 = alloc_box $<τ_0_0> { var τ_0_0 } <Builtin.UnknownObject>
  %24 = alloc_box $<τ_0_0> { var τ_0_0 } <Builtin.Int32>
  %25 = alloc_box $<τ_0_0> { var τ_0_0 } <Builtin.FPIEEE32>

  %26 = project_box %21 : $<τ_0_0> { var τ_0_0 } <Builtin.RawPointer>, 0
  %27 = project_box %22 : $<τ_0_0> { var τ_0_0 } <Builtin.NativeObject>, 0
  %28 = project_box %23 : $<τ_0_0> { var τ_0_0 } <Builtin.UnknownObject>, 0
  %29 = project_box %24 : $<τ_0_0> { var τ_0_0 } <Builtin.Int32>, 0
  %30 = project_box %25 : $<τ_0_0> { var τ_0_0 } <Builtin.FPIEEE32>, 0

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

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

  %7 = project_box %0 : $<τ_0_0> { var τ_0_0 } <ETest_S1>, 0
  %8 = project_box %1 : $<τ_0_0> { var τ_0_0 } <ETest_S2>, 0
  %9 = project_box %2 : $<τ_0_0> { var τ_0_0 } <ETest_E1>, 0
  %10 = project_box %3 : $<τ_0_0> { var τ_0_0 } <ETest_E2>, 0
  %11 = project_box %4 : $<τ_0_0> { var τ_0_0 } <ETest_C1>, 0
  %12 = project_box %5 : $<τ_0_0> { var τ_0_0 } <ETest_C2>, 0
  %13 = project_box %6 : $<τ_0_0> { var τ_0_0 } <ETest_E3>, 0

  %14 = project_box %0 : $<τ_0_0> { var τ_0_0 } <ETest_S1>, 0
  %15 = project_box %1 : $<τ_0_0> { var τ_0_0 } <ETest_S2>, 0
  %16 = project_box %2 : $<τ_0_0> { var τ_0_0 } <ETest_E1>, 0
  %17 = project_box %3 : $<τ_0_0> { var τ_0_0 } <ETest_E2>, 0
  %18 = project_box %4 : $<τ_0_0> { var τ_0_0 } <ETest_C1>, 0
  %19 = project_box %5 : $<τ_0_0> { var τ_0_0 } <ETest_C2>, 0
  %20 = project_box %6 : $<τ_0_0> { var τ_0_0 } <ETest_E3>, 0

  %21 = alloc_box $<τ_0_0> { var τ_0_0 } <Builtin.RawPointer>
  %22 = alloc_box $<τ_0_0> { var τ_0_0 } <Builtin.NativeObject>
  %23 = alloc_box $<τ_0_0> { var τ_0_0 } <Builtin.UnknownObject>
  %24 = alloc_box $<τ_0_0> { var τ_0_0 } <Builtin.Int32>
  %25 = alloc_box $<τ_0_0> { var τ_0_0 } <Builtin.FPIEEE32>

  %26 = project_box %21 : $<τ_0_0> { var τ_0_0 } <Builtin.RawPointer>, 0
  %27 = project_box %22 : $<τ_0_0> { var τ_0_0 } <Builtin.NativeObject>, 0
  %28 = project_box %23 : $<τ_0_0> { var τ_0_0 } <Builtin.UnknownObject>, 0
  %29 = project_box %24 : $<τ_0_0> { var τ_0_0 } <Builtin.Int32>, 0
  %30 = project_box %25 : $<τ_0_0> { var τ_0_0 } <Builtin.FPIEEE32>, 0

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

// CHECK-LABEL: @class_tests

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

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

// CHECK: PAIR #111.
// CHECK-NEXT:   %5 = project_box %2 : $<τ_0_0> { var τ_0_0 } <CTest_C3>, 0
// CHECK-NEXT:   %6 = project_box %0 : $<τ_0_0> { var τ_0_0 } <CTest_C1>, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #112.
// CHECK-NEXT:   %5 = project_box %2 : $<τ_0_0> { var τ_0_0 } <CTest_C3>, 0
// CHECK-NEXT:   %7 = project_box %1 : $<τ_0_0> { var τ_0_0 } <CTest_C2>, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #113.
// CHECK-NEXT:   %5 = project_box %2 : $<τ_0_0> { var τ_0_0 } <CTest_C3>, 0
// CHECK-NEXT:   %8 = project_box %2 : $<τ_0_0> { var τ_0_0 } <CTest_C3>, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #121.
// CHECK-NEXT:   %5 = project_box %2 : $<τ_0_0> { var τ_0_0 } <CTest_C3>, 0
// CHECK-NEXT:   %16 = project_box %9 : $<τ_0_0> { var τ_0_0 } <AnyObject>, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #122.
// CHECK-NEXT:   %5 = project_box %2 : $<τ_0_0> { var τ_0_0 } <CTest_C3>, 0
// CHECK-NEXT:   %17 = project_box %10 : $<τ_0_0> { var τ_0_0 } <Builtin.RawPointer>, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #123.
// CHECK-NEXT:   %5 = project_box %2 : $<τ_0_0> { var τ_0_0 } <CTest_C3>, 0
// CHECK-NEXT:   %18 = project_box %11 : $<τ_0_0> { var τ_0_0 } <Builtin.NativeObject>, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #124.
// CHECK-NEXT:   %5 = project_box %2 : $<τ_0_0> { var τ_0_0 } <CTest_C3>, 0
// CHECK-NEXT:   %19 = project_box %12 : $<τ_0_0> { var τ_0_0 } <Builtin.UnknownObject>, 0
// CHECK-NEXT: MayAlias
// CHECK: PAIR #125.
// CHECK-NEXT:   %5 = project_box %2 : $<τ_0_0> { var τ_0_0 } <CTest_C3>, 0
// CHECK-NEXT:   %20 = project_box %13 : $<τ_0_0> { var τ_0_0 } <Builtin.Int8>, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #126.
// CHECK-NEXT:   %5 = project_box %2 : $<τ_0_0> { var τ_0_0 } <CTest_C3>, 0
// CHECK-NEXT:   %21 = project_box %14 : $<τ_0_0> { var τ_0_0 } <Builtin.Int32>, 0
// CHECK-NEXT: NoAlias
// CHECK: PAIR #127.
// CHECK-NEXT:   %5 = project_box %2 : $<τ_0_0> { var τ_0_0 } <CTest_C3>, 0
// CHECK-NEXT:   %22 = project_box %15 : $<τ_0_0> { var τ_0_0 } <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 $<τ_0_0> { var τ_0_0 } <CTest_C1>
  %1 = alloc_box $<τ_0_0> { var τ_0_0 } <CTest_C2>
  %2 = alloc_box $<τ_0_0> { var τ_0_0 } <CTest_C3>

  %3 = project_box %0 : $<τ_0_0> { var τ_0_0 } <CTest_C1>, 0
  %4 = project_box %1 : $<τ_0_0> { var τ_0_0 } <CTest_C2>, 0
  %5 = project_box %2 : $<τ_0_0> { var τ_0_0 } <CTest_C3>, 0

  %6 = project_box %0 : $<τ_0_0> { var τ_0_0 } <CTest_C1>, 0
  %7 = project_box %1 : $<τ_0_0> { var τ_0_0 } <CTest_C2>, 0
  %8 = project_box %2 : $<τ_0_0> { var τ_0_0 } <CTest_C3>, 0

  %9 = alloc_box $<τ_0_0> { var τ_0_0 } <AnyObject>
  %10 = alloc_box $<τ_0_0> { var τ_0_0 } <Builtin.RawPointer>
  %11 = alloc_box $<τ_0_0> { var τ_0_0 } <Builtin.NativeObject>
  %12 = alloc_box $<τ_0_0> { var τ_0_0 } <Builtin.UnknownObject>
  %13 = alloc_box $<τ_0_0> { var τ_0_0 } <Builtin.Int8>
  %14 = alloc_box $<τ_0_0> { var τ_0_0 } <Builtin.Int32>
  %15 = alloc_box $<τ_0_0> { var τ_0_0 } <Builtin.FPIEEE32>

  %16 = project_box %9 : $<τ_0_0> { var τ_0_0 } <AnyObject>, 0
  %17 = project_box %10 : $<τ_0_0> { var τ_0_0 } <Builtin.RawPointer>, 0
  %18 = project_box %11 : $<τ_0_0> { var τ_0_0 } <Builtin.NativeObject>, 0
  %19 = project_box %12 : $<τ_0_0> { var τ_0_0 } <Builtin.UnknownObject>, 0
  %20 = project_box %13 : $<τ_0_0> { var τ_0_0 } <Builtin.Int8>, 0
  %21 = project_box %14 : $<τ_0_0> { var τ_0_0 } <Builtin.Int32>, 0
  %22 = project_box %15 : $<τ_0_0> { var τ_0_0 } <Builtin.FPIEEE32>, 0

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

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

  %3 = project_box %0 : $<τ_0_0> { var τ_0_0 } <(Builtin.RawPointer, Builtin.Int64)>, 0
  %4 = project_box %1 : $<τ_0_0> { var τ_0_0 } <(TTest_S1, Builtin.Int64)>, 0
  %5 = project_box %2 : $<τ_0_0> { var τ_0_0 } <(TTest_E1, Builtin.Int64)>, 0

  %6 = project_box %0 : $<τ_0_0> { var τ_0_0 } <(Builtin.RawPointer, Builtin.Int64)>, 0
  %7 = project_box %1 : $<τ_0_0> { var τ_0_0 } <(TTest_S1, Builtin.Int64)>, 0
  %8 = project_box %2 : $<τ_0_0> { var τ_0_0 } <(TTest_E1, Builtin.Int64)>, 0

  %9 = alloc_box $<τ_0_0> { var τ_0_0 } <Builtin.RawPointer>
  %10 = alloc_box $<τ_0_0> { var τ_0_0 } <Builtin.NativeObject>
  %11 = alloc_box $<τ_0_0> { var τ_0_0 } <Builtin.UnknownObject>
  %12 = alloc_box $<τ_0_0> { var τ_0_0 } <Builtin.Int8>
  %13 = alloc_box $<τ_0_0> { var τ_0_0 } <Builtin.Int32>
  %14 = alloc_box $<τ_0_0> { var τ_0_0 } <Builtin.FPIEEE32>

  %15 = project_box %9 : $<τ_0_0> { var τ_0_0 } <Builtin.RawPointer>, 0
  %16 = project_box %10 : $<τ_0_0> { var τ_0_0 } <Builtin.NativeObject>, 0
  %17 = project_box %11 : $<τ_0_0> { var τ_0_0 } <Builtin.UnknownObject>, 0
  %18 = project_box %12 : $<τ_0_0> { var τ_0_0 } <Builtin.Int8>, 0
  %19 = project_box %13 : $<τ_0_0> { var τ_0_0 } <Builtin.Int32>, 0
  %20 = project_box %14 : $<τ_0_0> { var τ_0_0 } <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 : $<τ_0_0> { var τ_0_0 } <Builtin.Int32>, 0
// CHECK-NEXT:   %3 = project_box %1 : $<τ_0_0> { var τ_0_0 } <Builtin.Int64>, 0
// CHECK-NEXT: NoAlias
sil @test_project_box : $@convention(thin) (<τ_0_0> { var τ_0_0 } <Builtin.Int32>, <τ_0_0> { var τ_0_0 } <Builtin.Int64>) -> () {
bb0(%0 : $<τ_0_0> { var τ_0_0 } <Builtin.Int32>, %1 : $<τ_0_0> { var τ_0_0 } <Builtin.Int64>):
  %2 = project_box %0 : $<τ_0_0> { var τ_0_0 } <Builtin.Int32>, 0
  %3 = project_box %1 : $<τ_0_0> { var τ_0_0 } <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 : $()
}
