// RUN: %empty-directory(%t) // RUN: %target-sil-opt -sil-print-types %s -emit-sib -o %t/tmp.sib -module-name basic2 // RUN: %target-sil-opt -sil-print-types %t/tmp.sib -o %t/tmp.2.sib -module-name basic2 // RUN: %target-sil-opt -sil-print-types %t/tmp.2.sib -module-name basic2 -emit-sorted-sil | %FileCheck %s // Once move only is no longer behind a feature flag, merge this into basic2. sil_stage raw import Swift class Klass {} struct MoveOnlyPair: ~Copyable { var lhs: Klass var rhs: Klass } // CHECK-LABEL: sil [ossa] @testMarkUnresolvedNonCopyableValueInst : $@convention(thin) (@guaranteed Klass) -> () { // CHECK: mark_unresolved_non_copyable_value [consumable_and_assignable] %{{[0-9]+}} : $*MoveOnlyPair // CHECK: } // end sil function 'testMarkUnresolvedNonCopyableValueInst' sil [ossa] @testMarkUnresolvedNonCopyableValueInst : $@convention(thin) (@guaranteed Klass) -> () { bb0(%0 : @guaranteed $Klass): %1 = alloc_box ${ var MoveOnlyPair } %2 = project_box %1 : ${ var MoveOnlyPair }, 0 %3 = mark_unresolved_non_copyable_value [consumable_and_assignable] %2 : $*MoveOnlyPair %3c = begin_access [modify] [static] %3 : $*MoveOnlyPair %3a = struct_element_addr %3c : $*MoveOnlyPair, #MoveOnlyPair.lhs %3b = struct_element_addr %3c : $*MoveOnlyPair, #MoveOnlyPair.rhs %0a = copy_value %0 : $Klass %0b = copy_value %0 : $Klass store %0a to [init] %3a : $*Klass store %0b to [init] %3b : $*Klass end_access %3c : $*MoveOnlyPair destroy_value %1 : ${ var MoveOnlyPair } %9999 = tuple() return %9999 : $() }