// RUN: %target-sil-opt -sil-print-types -enable-sil-verify-all %s -onone-simplification -simplify-instruction=classify_bridge_object | %FileCheck %s // REQUIRES: swift_in_compiler import Swift import Builtin struct MyArray { let o: Builtin.BridgeObject } // CHECK-LABEL: sil @test_swift_class : // CHECK: %1 = integer_literal $Builtin.Int1, 0 // CHECK: %2 = tuple (%1 : $Builtin.Int1, %1 : $Builtin.Int1) // CHECK: return %2 // CHECK: } // end sil function 'test_swift_class' sil @test_swift_class : $@convention(thin) (@guaranteed _ContiguousArrayStorage) -> (Builtin.Int1, Builtin.Int1) { bb0(%0 : $_ContiguousArrayStorage): %1 = unchecked_ref_cast %0 : $_ContiguousArrayStorage to $Builtin.BridgeObject %2 = classify_bridge_object %1 : $Builtin.BridgeObject return %2 : $(Builtin.Int1, Builtin.Int1) } // CHECK-LABEL: sil @test_unknown_class : // CHECK: %1 = struct_extract %0 // CHECK: %2 = classify_bridge_object %1 // CHECK: return %2 // CHECK: } // end sil function 'test_unknown_class' sil @test_unknown_class : $@convention(thin) (@guaranteed MyArray) -> (Builtin.Int1, Builtin.Int1) { bb0(%0 : $MyArray): %1 = struct_extract %0 : $MyArray, #MyArray.o %2 = classify_bridge_object %1 : $Builtin.BridgeObject return %2 : $(Builtin.Int1, Builtin.Int1) }