Skip to content

Commit 0847225

Browse files
committed
Only emit DWARF types for enums when -gdwarf-types is specified.
1 parent 33ac7eb commit 0847225

File tree

6 files changed

+33
-23
lines changed

6 files changed

+33
-23
lines changed

lib/IRGen/IRGenDebugInfo.cpp

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1624,16 +1624,26 @@ llvm::DIType *IRGenDebugInfo::createType(DebugTypeInfo DbgTy,
16241624
auto *EnumTy = BaseTy->castTo<EnumType>();
16251625
auto *Decl = EnumTy->getDecl();
16261626
auto L = getDebugLoc(SM, Decl);
1627-
return createEnumType(DbgTy, Decl, MangledName, Scope,
1628-
getOrCreateFile(L.Filename), L.Line, Flags);
1627+
auto *File = getOrCreateFile(L.Filename);
1628+
if (Opts.DebugInfoKind > IRGenDebugInfoKind::ASTTypes)
1629+
return createEnumType(DbgTy, Decl, MangledName, Scope, File, L.Line,
1630+
Flags);
1631+
else
1632+
return createOpaqueStruct(Scope, Decl->getName().str(), File, L.Line,
1633+
SizeInBits, AlignInBits, Flags, MangledName);
16291634
}
16301635

16311636
case TypeKind::BoundGenericEnum: {
16321637
auto *EnumTy = BaseTy->castTo<BoundGenericEnumType>();
16331638
auto *Decl = EnumTy->getDecl();
16341639
auto L = getDebugLoc(SM, Decl);
1635-
return createEnumType(DbgTy, Decl, MangledName, Scope,
1636-
getOrCreateFile(L.Filename), L.Line, Flags);
1640+
auto *File = getOrCreateFile(L.Filename);
1641+
if (Opts.DebugInfoKind > IRGenDebugInfoKind::ASTTypes)
1642+
return createEnumType(DbgTy, Decl, MangledName, Scope, File, L.Line,
1643+
Flags);
1644+
else
1645+
return createOpaqueStruct(Scope, Decl->getName().str(), File, L.Line,
1646+
SizeInBits, AlignInBits, Flags, MangledName);
16371647
}
16381648

16391649
case TypeKind::BuiltinVector: {

test/DebugInfo/NestedTypes.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %target-swift-frontend -primary-file %s -emit-ir -g -o - | FileCheck %s
1+
// RUN: %target-swift-frontend -primary-file %s -emit-ir -gdwarf-types -o - | FileCheck %s
22

33
// Verify that the size of a class that has not been created before
44
// its outer type is emitted is emitted correctly.

test/DebugInfo/bound-namealiastype.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@ func dispatch_queue_create() -> dispatch_queue_t! {
1010

1111
// CHECK: !DIGlobalVariable(name: "queue",
1212
// CHECK-SAME: line: [[@LINE+3]], type: ![[T:[0-9]+]]
13-
// CHECK: ![[T]] = !DICompositeType(tag: DW_TAG_union_type,
13+
// CHECK: ![[T]] = !DICompositeType(
1414
// CHECK-SAME: identifier: "_TtGSqa4main16dispatch_queue_t_"
1515
public var queue = dispatch_queue_create()

test/DebugInfo/enum.swift

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,38 +7,38 @@ protocol P {}
77

88
enum Either {
99
case First(Int64), Second(P), Neither
10-
// CHECK: !DICompositeType(tag: DW_TAG_union_type, name: "Either",
10+
// CHECK: !DICompositeType({{.*}}name: "Either",
1111
// CHECK-SAME: line: [[@LINE-3]],
1212
// CHECK-SAME: size: {{328|168}},
1313
}
14-
// CHECK: ![[INT:.*]] = !DICompositeType({{.*}}identifier: "_TtSi"
14+
// DWARF: ![[INT:.*]] = !DICompositeType({{.*}}identifier: "_TtSi"
1515
let E : Either = .Neither;
1616

17-
// CHECK: !DICompositeType(tag: DW_TAG_union_type, name: "Color",
17+
// CHECK: !DICompositeType({{.*}}name: "Color",
1818
// CHECK-SAME: line: [[@LINE+3]]
1919
// CHECK-SAME: size: 8, align: 8,
2020
// CHECK-SAME: identifier: "_TtO4enum5Color"
2121
enum Color : UInt64 {
2222
// This is effectively a 2-bit bitfield:
23-
// CHECK: !DIDerivedType(tag: DW_TAG_member, name: "Red"
24-
// CHECK-SAME: baseType: ![[UINT64:[0-9]+]]
25-
// CHECK-SAME: size: 8, align: 8{{[,)]}}
26-
// CHECK: ![[UINT64]] = !DICompositeType({{.*}}identifier: "_TtVs6UInt64"
23+
// DWARF: !DIDerivedType(tag: DW_TAG_member, name: "Red"
24+
// DWARF-SAME: baseType: ![[UINT64:[0-9]+]]
25+
// DWARF-SAME: size: 8, align: 8{{[,)]}}
26+
// DWARF: ![[UINT64]] = !DICompositeType({{.*}}identifier: "_TtVs6UInt64"
2727
case Red, Green, Blue
2828
}
2929

30-
// CHECK: !DICompositeType(tag: DW_TAG_union_type, name: "MaybeIntPair",
30+
// CHECK: !DICompositeType({{.*}}name: "MaybeIntPair",
3131
// CHECK-SAME: line: [[@LINE+3]],
3232
// CHECK-SAME: size: 136, align: 64{{[,)]}}
3333
// CHECK-SAME: identifier: "_TtO4enum12MaybeIntPair"
3434
enum MaybeIntPair {
35-
// CHECK: !DIDerivedType(tag: DW_TAG_member, name: "none"
36-
// CHECK-SAME: baseType: ![[INT]], align: 8{{[,)]}}
35+
// DWARF: !DIDerivedType(tag: DW_TAG_member, name: "none"
36+
// DWARF-SAME: baseType: ![[INT]], align: 8{{[,)]}}
3737
case none
38-
// CHECK: !DIDerivedType(tag: DW_TAG_member, name: "just"
39-
// CHECK-SAME: baseType: ![[INTTUP:[0-9]+]]
40-
// CHECK-SAME: size: 128, align: 64{{[,)]}}
41-
// CHECK: ![[INTTUP]] = !DICompositeType({{.*}}identifier: "_TtTVs5Int64S__"
38+
// DWARF: !DIDerivedType(tag: DW_TAG_member, name: "just"
39+
// DWARF-SAME: baseType: ![[INTTUP:[0-9]+]]
40+
// DWARF-SAME: size: 128, align: 64{{[,)]}}
41+
// DWARF: ![[INTTUP]] = !DICompositeType({{.*}}identifier: "_TtTVs5Int64S__"
4242
case just(Int64, Int64)
4343
}
4444

@@ -49,7 +49,7 @@ enum Maybe<T> {
4949

5050
let r = Color.Red
5151
let c = MaybeIntPair.just(74, 75)
52-
// CHECK: !DICompositeType(tag: DW_TAG_union_type, name: "Maybe",
52+
// CHECK: !DICompositeType({{.*}}name: "Maybe",
5353
// CHECK-SAME: line: [[@LINE-8]],
5454
// CHECK-SAME: size: 8, align: 8{{[,)]}}
5555
// CHECK-SAME: identifier: "_TtGO4enum5MaybeOS_5Color_"

test/DebugInfo/generic_enum.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ func wrapTrivialGeneric<T, U>(_ t: T, u: U) -> TrivialGeneric<T, U> {
1818
}
1919
// CHECK-DAG: ![[T1:.*]] = !DICompositeType({{.*}}identifier: "_TtGO12generic_enum14TrivialGenericVs5Int64SS_"
2020
// CHECK-DAG: !DIGlobalVariable(name: "tg",{{.*}} line: [[@LINE+2]],{{.*}} type: ![[T1]],{{.*}} isLocal: false, isDefinition: true
21-
// CHECK-DAG: !DICompositeType(tag: DW_TAG_union_type, name: "TrivialGeneric", {{.*}}identifier: "_TtGO12generic_enum14TrivialGenericVs5Int64SS_"
21+
// CHECK-DAG: !DICompositeType({{.*}}, name: "TrivialGeneric", {{.*}}identifier: "_TtGO12generic_enum14TrivialGenericVs5Int64SS_"
2222
var tg : TrivialGeneric<Int64, String> = .x(23, "skidoo")
2323
switch tg {
2424
case .x(var t, var u):

test/DebugInfo/variables.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ enum TriValue {
102102
case top
103103
}
104104
// CHECK-DAG: !DIGlobalVariable(name: "unknown",{{.*}} type: ![[TRIVAL:[0-9]+]]
105-
// CHECK-DAG: ![[TRIVAL]] = !DICompositeType(tag: DW_TAG_union_type, name: "TriValue",
105+
// CHECK-DAG: ![[TRIVAL]] = !DICompositeType({{.*}}name: "TriValue",
106106
var unknown = TriValue.top
107107
func myprint(_ value: TriValue) {
108108
switch value {

0 commit comments

Comments
 (0)