mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Type annotations for instruction operands are omitted, e.g. ``` %3 = struct $S(%1, %2) ``` Operand types are redundant anyway and were only used for sanity checking in the SIL parser. But: operand types _are_ printed if the definition of the operand value was not printed yet. This happens: * if the block with the definition appears after the block where the operand's instruction is located * if a block or instruction is printed in isolation, e.g. in a debugger The old behavior can be restored with `-Xllvm -sil-print-types`. This option is added to many existing test files which check for operand types in their check-lines.
36 lines
1.3 KiB
Plaintext
36 lines
1.3 KiB
Plaintext
// 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<Int>) -> (Builtin.Int1, Builtin.Int1) {
|
|
bb0(%0 : $_ContiguousArrayStorage<Int>):
|
|
%1 = unchecked_ref_cast %0 : $_ContiguousArrayStorage<Int> 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)
|
|
}
|
|
|