Files
swift-mirror/test/IRGen/anonymous_context_descriptors.sil
Becca Royal-Gordon 04f82b424c [NFC] Emit descriptive string constant names
Modify IRGen to emit “anonymous” string constants with names of the form `@.str.<len>.<contents>` (with a special mangling for internal `\0` characters). This makes it much easier to write IRGen tests that check for the contents of strings, because matching the constant name also implies that the constant has the expected content.
2022-09-21 11:40:15 -07:00

42 lines
1.5 KiB
Plaintext

// RUN: %target-swift-frontend -emit-ir %s > %t.ir
// %FileCheck --input-file %t.ir %s
// RUN: %target-swift-frontend -emit-ir -enable-anonymous-context-mangled-names %s > %t.anon.ir
// RUN: %FileCheck --input-file %t.anon.ir %s -check-prefix CHECK-MANGLED
import Builtin
import Swift
protocol P { }
class Blah<T: P> {
private struct Inner<U: P> { }
}
// Mangled name of the anonymous descriptor
// CHECK-NOT: private constant [84 x i8] c"$s29anonymous_context_descriptors4BlahC5Inner33_4F495173994818481DD703D65EB08308LLV\00"
// CHECK-MANGLED: @".str.83.$s29anonymous_context_descriptors4BlahC5Inner33_4F495173994818481DD703D65EB08308LLV" = private constant [84 x i8] c"$s29anonymous_context_descriptors4BlahC5Inner33_4F495173994818481DD703D65EB08308LLV\00"
// Anonymous descriptor
// CHECK: @"$s29anonymous_context_descriptors4BlahC5Inner33{{.*}}MXX" =
// CHECK-MANGLED: @"$s29anonymous_context_descriptors4BlahC5Inner33{{.*}}MXX" =
// Flags: anonymous (2) + generic (0x80) + unique (0x40)
// CHECK-SAME: i32 194
// Flags: anonymous (2) + generic (0x80) + unique (0x40) + has mangled name (0x10000)
// CHECK-MANGLED-SAME: i32 65730
// Parent
// CHECK-SAME: $s29anonymous_context_descriptors4BlahCMn
// CHECK-MANGLED-SAME: $s29anonymous_context_descriptors4BlahCMn
// # generic header
// CHECK-SAME: i16 2, i16 2
// CHECK-SAME: i16 4, i16 0
// CHECK-MANGLED-SAME: i16 2, i16 2
// CHECK-MANGLED-SAME: i16 4, i16 0
// # mangled name
// CHECK-MANGLED-SAME: @".str.83.$s29anonymous_context_descriptors4BlahC5Inner33_4F495173994818481DD703D65EB08308LLV"