Files
swift-mirror/test/SILOptimizer/builtins.swift
Erik Eckstein 7cceaff5f3 SIL: don't print operand types in textual SIL
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.
2024-11-21 18:49:52 +01:00

25 lines
1.3 KiB
Swift

// RUN: %target-swift-frontend -enable-builtin-module -O -Xllvm -sil-print-types -emit-sil %s | %IRGenFileCheck %s
import Builtin
// CHECK-LABEL: sil @storeBytesBitwiseCopyable : {{.*}} {
// CHECK: bb0(
// CHECK-SAME: [[SELF:%[^,]+]] : $UnsafeMutableRawPointer,
// CHECK-SAME: [[VALUE:%[^,]+]] : $*T,
// CHECK-SAME: [[OFFSET:%[^,]+]] : $Int,
// CHECK-SAME: {{%[^,]+}} : $@thick T.Type):
// CHECK: [[SELF_RAW_VALUE:%[^,]+]] = struct_extract [[SELF]] : {{.*}} #UnsafeMutableRawPointer._rawValue
// CHECK: [[OFFSET_VALUE:%[^,]+]] = struct_extract [[OFFSET]] : {{.*}} #Int._value
// CHECK: [[OFFSET_WORD:%[^,]+]] = builtin "{{trunc|sext}}OrBitCast_Int[[PTR_SIZE]]_Word"([[OFFSET_VALUE]] : $Builtin.Int[[PTR_SIZE]])
// CHECK: [[DESTINATION_POINTER:%[^,]+]] = index_raw_pointer [[SELF_RAW_VALUE]] : $Builtin.RawPointer, [[OFFSET_WORD]]
// CHECK: [[DESTINATION:%[^,]+]] = pointer_to_address [[DESTINATION_POINTER]] : $Builtin.RawPointer to [align=1]
// CHECK: copy_addr [[VALUE]] to [[DESTINATION]]
// CHECK-LABEL: } // end sil function 'storeBytesBitwiseCopyable'
@_silgen_name("storeBytesBitwiseCopyable")
public func storeBytes<T : BitwiseCopyable>(
_ self: UnsafeMutableRawPointer,
of value: T, toByteOffset offset: Int = 0, as type: T.Type
) {
Builtin.storeRaw(value, (self + offset)._rawValue)
}