Skip to content

Commit 0bda3f5

Browse files
committed
Debug info support for variadic generics.
rdar://104842055
1 parent 77feef5 commit 0bda3f5

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

lib/IRGen/IRGenDebugInfo.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1528,11 +1528,16 @@ class IRGenDebugInfoImpl : public IRGenDebugInfo {
15281528
File, FwdDeclLine, Flags, MangledName);
15291529
}
15301530

1531-
case TypeKind::SILPack:
15321531
case TypeKind::Pack:
1533-
case TypeKind::PackExpansion:
15341532
llvm_unreachable("Unimplemented!");
15351533

1534+
case TypeKind::SILPack:
1535+
case TypeKind::PackExpansion:
1536+
//assert(SizeInBits == CI.getTargetInfo().getPointerWidth(0));
1537+
return createPointerSizedStruct(Scope,
1538+
MangledName,
1539+
MainFile, 0, Flags, MangledName);
1540+
15361541
case TypeKind::BuiltinTuple:
15371542
llvm_unreachable("BuiltinTupleType should not show up here");
15381543

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
// RUN: %target-swift-frontend -emit-ir %s -g -o - \
2+
// RUN: -enable-experimental-feature VariadicGenerics \
3+
// RUN: -parse-as-library -module-name a \
4+
// RUN: -disable-round-trip-debug-types | %FileCheck %s
5+
// FIXME: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ remove this!
6+
7+
public func foo<T...>(args: repeat each T) {
8+
// CHECK: define {{.*}} @"$s1a3foo4argsyxxQp_tlF"
9+
// CHECK: %[[ARGS_ALLOCA:.*]] = alloca %swift.opaque**
10+
// CHECK-DAG: call void @llvm.dbg.declare(metadata %swift.opaque*** %[[ARGS_ALLOCA]], metadata ![[ARGS_VAR:[0-9]+]], metadata !DIExpression(DW_OP_deref))
11+
// 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]+]])
13+
// CHECK-DAG: ![[ARGS_LET_TY]] = !DIDerivedType(tag: DW_TAG_const_type, baseType: ![[ARGS_TY:[0-9]+]])
14+
// CHECK-DAG: ![[ARGS_TY]] = !DICompositeType({{.*}}identifier: "$sxxQp_QSiD")
15+
}
16+

0 commit comments

Comments
 (0)