Skip to content

Commit 4aadffe

Browse files
committed
Describe type pack parameters in debug info.
1 parent 0bda3f5 commit 4aadffe

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

lib/IRGen/IRGenSIL.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1097,6 +1097,9 @@ class IRGenSILFunction :
10971097
runtimeTy.visit([&](CanType t) {
10981098
if (auto archetype = dyn_cast<ArchetypeType>(t))
10991099
emitTypeMetadataRef(archetype);
1100+
else if (auto packArchetype = dyn_cast<PackArchetypeType>(t))
1101+
emitTypeMetadataRef(packArchetype);
1102+
11001103
});
11011104
}
11021105

test/DebugInfo/variadic-generics.swift

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,18 @@
66

77
public func foo<T...>(args: repeat each T) {
88
// CHECK: define {{.*}} @"$s1a3foo4argsyxxQp_tlF"
9+
// CHECK-SAME: %swift.type** %[[TYPE_PACK_ARG:.*]])
10+
// CHECK: %[[TYPE_PACK_ALLOCA:.*]] = alloca %swift.type**
11+
// CHECK: call void @llvm.dbg.declare(metadata %swift.type*** %[[TYPE_PACK_ALLOCA]], metadata ![[TYPE_PACK_VAR:[0-9]+]], metadata !DIExpression())
912
// CHECK: %[[ARGS_ALLOCA:.*]] = alloca %swift.opaque**
1013
// CHECK-DAG: call void @llvm.dbg.declare(metadata %swift.opaque*** %[[ARGS_ALLOCA]], metadata ![[ARGS_VAR:[0-9]+]], metadata !DIExpression(DW_OP_deref))
14+
// CHECK-DAG: store %swift.type** %[[TYPE_PACK_ARG]], %swift.type*** %[[TYPE_PACK_ALLOCA]]
1115
// CHECK-DAG: store %swift.opaque** %0, %swift.opaque*** %[[ARGS_ALLOCA]]
12-
// CHECK-DAG: ![[ARGS_VAR]] = !DILocalVariable(name: "args", arg: 1, {{.*}}line: [[@LINE-5]], type: ![[ARGS_LET_TY:[0-9]+]])
16+
// CHECK-DAG: ![[ARGS_VAR]] = !DILocalVariable(name: "args", arg: 1, {{.*}}line: [[@LINE-9]], type: ![[ARGS_LET_TY:[0-9]+]])
1317
// CHECK-DAG: ![[ARGS_LET_TY]] = !DIDerivedType(tag: DW_TAG_const_type, baseType: ![[ARGS_TY:[0-9]+]])
1418
// CHECK-DAG: ![[ARGS_TY]] = !DICompositeType({{.*}}identifier: "$sxxQp_QSiD")
19+
// CHECK-DAG: ![[TYPE_PACK_VAR]] = !DILocalVariable(name: "$\CF\84_0_0", {{.*}}type: ![[TYPE_PACK_TYD:[0-9]+]], flags: DIFlagArtificial)
20+
// CHECK-DAG: ![[TYPE_PACK_TYD]] = !DIDerivedType(tag: DW_TAG_typedef, name: "T", {{.*}}baseType: ![[TYPE_PACK_TY:[0-9]+]]
21+
// CHECK-DAG: ![[TYPE_PACK_TY]] = !DIDerivedType(tag: DW_TAG_pointer_type, name: "$sBpD"
1522
}
1623

0 commit comments

Comments
 (0)