Debug Info: type-unique enum types by virtue of their mangled name.

rdar://problem/20015686

Swift SVN r26104
This commit is contained in:
Adrian Prantl
2015-03-13 18:13:59 +00:00
parent f54e3570a3
commit 3c6af3610a
5 changed files with 16 additions and 13 deletions

View File

@@ -1348,9 +1348,9 @@ IRGenDebugInfo::createEnumType(DebugTypeInfo DbgTy, EnumDecl *Decl,
DITypeCache[DbgTy.getType()] = TH; DITypeCache[DbgTy.getType()] = TH;
auto DITy = DBuilder.createUnionType( auto DITy = DBuilder.createUnionType(
Scope, MangledName, File, Line, SizeInBits, AlignInBits, Flags, Scope, Decl->getName().str(), File, Line, SizeInBits, AlignInBits, Flags,
getEnumElements(DbgTy, Decl, Scope, File, Flags), getEnumElements(DbgTy, Decl, Scope, File, Flags),
llvm::dwarf::DW_LANG_Swift); llvm::dwarf::DW_LANG_Swift, MangledName);
FwdDecl->replaceAllUsesWith(DITy); FwdDecl->replaceAllUsesWith(DITy);
llvm::MDNode::deleteTemporary(FwdDecl); llvm::MDNode::deleteTemporary(FwdDecl);

View File

@@ -3,8 +3,8 @@
// REQUIRES: objc_interop // REQUIRES: objc_interop
import Dispatch import Dispatch
// CHECK-DAG: ![[QUEUE_T:[0-9]+]] = !MDCompositeType(tag: DW_TAG_union_type, name: "_TtGSQaSC21dispatch_queue_attr_t_" // CHECK-DAG: !MDCompositeType(tag: DW_TAG_union_type, {{.*}}identifier: "_TtGSQaSC21dispatch_queue_attr_t_"
// CHECK-DAG: !MDGlobalVariable(name: "queue",{{.*}} line: [[@LINE+1]], type: ![[QUEUE_T]] // CHECK-DAG: !MDGlobalVariable(name: "queue",{{.*}} line: [[@LINE+1]], type: !"_TtGSQaSC21dispatch_queue_attr_t_"
var queue = dispatch_queue_create("queue", nil) var queue = dispatch_queue_create("queue", nil)
dispatch_sync(queue) { println("Hello world"); } dispatch_sync(queue) { println("Hello world"); }

View File

@@ -1,8 +1,9 @@
// RUN: %target-swift-frontend %s -emit-ir -g -o - | FileCheck %s // RUN: %target-swift-frontend %s -emit-ir -g -o - | FileCheck %s
// CHECK: !MDCompositeType(tag: DW_TAG_union_type, name: "_TtO4enum5Color" // CHECK: !MDCompositeType(tag: DW_TAG_union_type, name: "Color",
// CHECK-SAME: line: [[@LINE+2]] // CHECK-SAME: line: [[@LINE+3]]
// CHECK-SAME: size: 8, align: 8, // CHECK-SAME: size: 8, align: 8,
// CHECK-SAME: identifier: "_TtO4enum5Color"
enum Color : UInt { enum Color : UInt {
// CHECK: !MDDerivedType(tag: DW_TAG_member, name: "Red" // CHECK: !MDDerivedType(tag: DW_TAG_member, name: "Red"
// CHECK-SAME: baseType: !"_TtSu" // CHECK-SAME: baseType: !"_TtSu"
@@ -10,9 +11,10 @@ enum Color : UInt {
case Red, Green, Blue case Red, Green, Blue
} }
// CHECK: !MDCompositeType(tag: DW_TAG_union_type, name: "_TtO4enum12MaybeIntPair" // CHECK: !MDCompositeType(tag: DW_TAG_union_type, name: "MaybeIntPair",
// CHECK-SAME: line: [[@LINE+2]], // CHECK-SAME: line: [[@LINE+3]],
// CHECK-SAME: size: 136, align: 64{{[,)]}} // CHECK-SAME: size: 136, align: 64{{[,)]}}
// CHECK-SAME: identifier: "_TtO4enum12MaybeIntPair"
enum MaybeIntPair { enum MaybeIntPair {
// CHECK: !MDDerivedType(tag: DW_TAG_member, name: "None" // CHECK: !MDDerivedType(tag: DW_TAG_member, name: "None"
// CHECK-SAME: baseType: !"_TtSi" // CHECK-SAME: baseType: !"_TtSi"
@@ -31,7 +33,8 @@ enum Maybe<T> {
let r = Color.Red let r = Color.Red
let c = MaybeIntPair.Just(74, 75) let c = MaybeIntPair.Just(74, 75)
// CHECK: !MDCompositeType(tag: DW_TAG_union_type, name: "_TtGO4enum5MaybeOS_5Color_" // CHECK: !MDCompositeType(tag: DW_TAG_union_type, name: "Maybe",
// CHECK-SAME: line: [[@LINE-8]], // CHECK-SAME: line: [[@LINE-8]],
// CHECK-SAME: size: 8, align: 8{{[,)]}} // CHECK-SAME: size: 8, align: 8{{[,)]}}
// CHECK-SAME: identifier: "_TtGO4enum5MaybeOS_5Color_"
let movie : Maybe<Color> = .None let movie : Maybe<Color> = .None

View File

@@ -14,8 +14,8 @@ func unwrapTrivialGeneric<T, U>(tg: TrivialGeneric<T, U>) -> (T, U) {
func wrapTrivialGeneric<T, U>(t: T, u: U) -> TrivialGeneric<T, U> { func wrapTrivialGeneric<T, U>(t: T, u: U) -> TrivialGeneric<T, U> {
return .x(t, u) return .x(t, u)
} }
// CHECK-DAG: !MDGlobalVariable(name: "tg",{{.*}} line: [[@LINE+2]],{{.*}} type: ![[TGT:[^,]+]],{{.*}} isLocal: false, isDefinition: true // CHECK-DAG: !MDGlobalVariable(name: "tg",{{.*}} line: [[@LINE+2]],{{.*}} type: !"_TtGO12generic_enum14TrivialGenericSiSS_",{{.*}} isLocal: false, isDefinition: true
// CHECK-DAG: ![[TGT]] = !MDCompositeType(tag: DW_TAG_union_type, name: "_TtGO12generic_enum14TrivialGenericSiSS_" // CHECK-DAG: !MDCompositeType(tag: DW_TAG_union_type, name: "TrivialGeneric", {{.*}}identifier: "_TtGO12generic_enum14TrivialGenericSiSS_"
var tg : TrivialGeneric<Int, String> = .x(23, "skidoo") var tg : TrivialGeneric<Int, String> = .x(23, "skidoo")
switch tg { switch tg {
case .x(var t, var u): case .x(var t, var u):

View File

@@ -102,8 +102,8 @@ enum TriValue {
case true_ case true_
case top case top
} }
// CHECK-DAG: !MDGlobalVariable(name: "unknown",{{.*}} type: ![[UNIONTYPE:[^,)]+]] // CHECK-DAG: !MDGlobalVariable(name: "unknown",{{.*}} type: !"_TtO{{9variables|4main}}8TriValue"
// CHECK-DAG: ![[UNIONTYPE]] = !MDCompositeType(tag: DW_TAG_union_type, name: "_TtO{{9variables|4main}}8TriValue" // CHECK-DAG: !MDCompositeType(tag: DW_TAG_union_type, name: "TriValue", {{.*}}identifier: "_TtO{{9variables|4main}}8TriValue"
var unknown = TriValue.top var unknown = TriValue.top
func println(value: TriValue) { func println(value: TriValue) {
switch value { switch value {