mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Debug Info: type-unique enum types by virtue of their mangled name.
rdar://problem/20015686 Swift SVN r26104
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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"); }
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user