mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Merge pull request #79929 from adrian-prantl/146688269
[Debug Info] Prevent infinite recursion when emitting debug info
This commit is contained in:
@@ -10,13 +10,13 @@ public let s = S<Int>(t: 0)
|
||||
// CHECK-SAME: templateParams: ![[PARAMS:[0-9]+]]
|
||||
// CHECK: ![[PARAMS]] = !{![[INTPARAM:[0-9]+]]}
|
||||
// CHECK: ![[INTPARAM]] = !DITemplateTypeParameter(type: ![[INT:[0-9]+]])
|
||||
// CHECK: ![[INT]] = !DICompositeType(tag: DW_TAG_structure_type, {{.*}}identifier: "$sSiD"
|
||||
// CHECK: ![[INT]] = !DICompositeType(tag: DW_TAG_structure_type, {{.*}}"$sSiD"
|
||||
|
||||
// DWARF-DAG: !DICompositeType(tag: DW_TAG_structure_type, {{.*}}templateParams: ![[PARAMS:[0-9]+]]{{.*}}identifier: "$s18BoundGenericStruct1SVySiGD"{{.*}}specification:
|
||||
|
||||
// DWARF-DAG: ![[PARAMS]] = !{![[INTPARAM:[0-9]+]]}
|
||||
// DWARF-DAG: ![[INTPARAM]] = !DITemplateTypeParameter(type: ![[INT:[0-9]+]])
|
||||
// DWARF-DAG: ![[INT]] = !DICompositeType(tag: DW_TAG_structure_type, name: "Int", {{.*}}identifier: "$sSiD"
|
||||
// DWARF-DAG: ![[INT]] = !DICompositeType(tag: DW_TAG_structure_type, name: "Int", {{.*}}"$sSiD"
|
||||
|
||||
// DWARF-DAG: !DICompositeType(tag: DW_TAG_structure_type, name: "S", {{.*}}identifier: "$s18BoundGenericStruct1SVyxGD")
|
||||
// DWARF-DAG: !DIDerivedType(tag: DW_TAG_member, name: "t"
|
||||
|
||||
@@ -27,8 +27,8 @@ func main() -> Int64 {
|
||||
// CHECK-DAG: ![[BAZPTR]] = !DIDerivedType(tag: DW_TAG_pointer_type,{{.*}} baseType: ![[BAZT:[0-9]+]]
|
||||
// CHECK-DAG: ![[BAZT]] = !DISubroutineType(types: ![[BAZARGS:.*]])
|
||||
// CHECK-DAG: ![[BAZARGS]] = !{![[INT:.*]], ![[FLOAT:.*]]}
|
||||
// CHECK-DAG: ![[INT]] = {{.*}}identifier: "$ss5Int64VD"
|
||||
// CHECK-DAG: ![[FLOAT]] = {{.*}}identifier: "$sSfD"
|
||||
// CHECK-DAG: ![[INT]] = {{.*}}"$ss5Int64VD"
|
||||
// CHECK-DAG: ![[FLOAT]] = {{.*}}"$sSfD"
|
||||
var baz_fnptr = baz
|
||||
baz_fnptr(2.89)
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ import local_type_originally_defined_in_other
|
||||
|
||||
public func definedInOtherModule() {
|
||||
let s = Sheep()
|
||||
// CHECK-DAG: DICompositeType(tag: DW_TAG_structure_type, name: "Sheep"{{.*}}identifier: "$s4Barn5SheepCD
|
||||
// CHECK-DAG: DICompositeType(tag: DW_TAG_structure_type, {{.*}}"$s4Barn5SheepCD
|
||||
}
|
||||
public func localTypeAliasTest(horse: Horse) {
|
||||
// The local type mangling for 'A' mentions 'Horse', which must
|
||||
@@ -18,7 +18,7 @@ public func localTypeAliasTest(horse: Horse) {
|
||||
|
||||
let info = UnsafeMutablePointer<A>.allocate(capacity: 1)
|
||||
_ = info
|
||||
// CHECK-DAG: DIDerivedType(tag: DW_TAG_typedef, name: "$s32local_type_originally_defined_in0A13TypeAliasTest5horsey4Barn5HorseV_tF1AL_aD"
|
||||
// CHECK-DAG: name: "$s32local_type_originally_defined_in0A13TypeAliasTest5horsey4Barn5HorseV_tF1AL_aD"
|
||||
}
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ public func localTypeTest(horse: Horse) {
|
||||
|
||||
let info = UnsafeMutablePointer<LocalStruct>.allocate(capacity: 1)
|
||||
_ = info
|
||||
// CHECK-DAG: DICompositeType(tag: DW_TAG_structure_type, {{.*}}identifier: "$s32local_type_originally_defined_in0A8TypeTest5horsey4Barn5HorseV_tF11LocalStructL_VD"
|
||||
// CHECK-DAG: DICompositeType(tag: DW_TAG_structure_type, {{.*}}: "$s32local_type_originally_defined_in0A8TypeTest5horsey4Barn5HorseV_tF11LocalStructL_VD"
|
||||
}
|
||||
|
||||
public func localTypeAliasTest() -> Horse {
|
||||
@@ -40,7 +40,7 @@ public func localTypeAliasTest() -> Horse {
|
||||
let info = UnsafeMutablePointer<B>.allocate(capacity: 1)
|
||||
_ = info
|
||||
return Horse()
|
||||
// CHECK-DAG: DIDerivedType(tag: DW_TAG_typedef, name: "$s32local_type_originally_defined_in0A13TypeAliasTest4Barn5HorseVyF1BL_aD"
|
||||
// CHECK-DAG: name: "$s32local_type_originally_defined_in0A13TypeAliasTest4Barn5HorseVyF1BL_aD"
|
||||
}
|
||||
|
||||
public func localTypeAliasTestGeneric<T: Cow>(cow: T) {
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// RUN: %target-swift-frontend -parse-stdlib %s -emit-ir -g -o - | %FileCheck %s
|
||||
// CHECK: !DIDerivedType(tag: DW_TAG_typedef, name: "$sBbD",
|
||||
// CHECK: !DIDerivedType(tag: DW_TAG_typedef, name: "BridgeObject", {{.*}}baseType: ![[BT:[0-9]+]]
|
||||
// CHECK: ![[BT]] = {{.*}}"$sBbD"
|
||||
var bo : Builtin.BridgeObject
|
||||
|
||||
23
test/DebugInfo/recursive_actor.swift
Normal file
23
test/DebugInfo/recursive_actor.swift
Normal file
@@ -0,0 +1,23 @@
|
||||
// RUN: %target-swift-frontend %s -emit-ir -g -o - | %FileCheck %s
|
||||
|
||||
// CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "A",{{.*}}elements: ![[A_ELTS:[0-9]+]], runtimeLang: DW_LANG_Swift, identifier: "$s15recursive_actor1ACyxGD")
|
||||
// CHECK: ![[A_ELTS]] = !{![[M_CHILD:[0-9]+]]}
|
||||
// CHECK: ![[M_CHILD]] = !DIDerivedType(tag: DW_TAG_member, name: "children", {{.*}}baseType: ![[CONT_AB:[0-9]+]]
|
||||
// CHECK: ![[CONT_AB]] = !DICompositeType(tag: DW_TAG_structure_type, {{.*}}elements: ![[C_ELTS:[0-9]+]]
|
||||
// CHECK: ![[C_ELTS]] = !{![[M_AB:[0-9]+]]}
|
||||
// CHECK: ![[M_AB]] = !DIDerivedType(tag: DW_TAG_member, {{.*}}baseType: ![[AB:[0-9]+]]
|
||||
// CHECK: ![[AB:[0-9]+]] = !DICompositeType(tag: DW_TAG_structure_type, name: "$sSay15recursive_actor1ACyACyxGGGD"
|
||||
|
||||
public actor A<Parent>: MutableA where Parent: MutableA {
|
||||
public let children: [A<A>] = []
|
||||
}
|
||||
|
||||
public protocol MutableA: Actor {
|
||||
associatedtype Child where Child: MutableA
|
||||
var children: [Child] { get }
|
||||
}
|
||||
|
||||
public actor B: MutableA {
|
||||
public private(set) var children: [A<B>] = []
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
func markUsed<T>(_ t: T) {}
|
||||
|
||||
// CHECK-DAG: ![[INTTYPE:.*]] = !DICompositeType(tag: DW_TAG_structure_type, name: "Int", {{.*}})
|
||||
// CHECK-DAG: ![[INTTYPE:.*]] = !DICompositeType(tag: DW_TAG_structure_type, {{.*}}"$sSiD"
|
||||
|
||||
public class DWARF {
|
||||
// CHECK-DAG: ![[BASE:.*]] = !DICompositeType({{.*}}identifier: "$ss6UInt32VD"
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
// and we can preserve that MyClass<LocalAlias, Bool> = MyClass<Bool, Bool>
|
||||
// we cannot preserve that LocalAlias = Bool.
|
||||
|
||||
// CHECK: !DIDerivedType(tag: DW_TAG_typedef, name: "$s1a7MyClassCyAA10LocalAliasaSbGD",{{.*}}baseType: ![[BOOLBOOLTY:[0-9]+]]
|
||||
// CHECK: ![[BOOLBOOLTY]] = !DICompositeType(tag: DW_TAG_structure_type, name: "MyClass", {{.*}}identifier: "$s1a7MyClassCyS2bGD"
|
||||
// CHECK: !DIDerivedType(tag: DW_TAG_typedef, name: "$s1a10ClassAliasaD"{{.*}}baseType: ![[LOCAL_BOOLTY:[0-9]+]]
|
||||
// CHECK: ![[LOCAL_BOOLTY]] = !DICompositeType(tag: DW_TAG_structure_type, name: "MyClass", {{.*}}identifier: "$s1a7MyClassCyAA10LocalAliasaSbGD"
|
||||
|
||||
// FIXME: !DIDerivedType(tag: DW_TAG_typedef, name: "$s1a10LocalAliasaD", {{.*}}baseType: ![[BASETY:[0-9]+]]
|
||||
// FIXME: ![[BASETY]]{{.*}}$sSbD
|
||||
|
||||
@@ -22,5 +22,5 @@ func concreteBA(_: Builtin.FixedArray<4, Int>) {}
|
||||
// CHECK-DAG: ![[COUNT_PARAM]] = !DITemplateTypeParameter(type: ![[COUNT_TYPE:.*]])
|
||||
// CHECK-DAG: ![[COUNT_TYPE]] = !DICompositeType({{.*}}name: "$s$1_D"
|
||||
// CHECK-DAG: ![[ELEMENT_PARAM]] = !DITemplateTypeParameter(type: ![[ELEMENT_TYPE:.*]])
|
||||
// CHECK-DAG: ![[ELEMENT_TYPE]] = !DICompositeType({{.*}}identifier: "$sSiD"
|
||||
// CHECK-DAG: ![[ELEMENT_TYPE]] = !DICompositeType({{.*}}"$sSiD"
|
||||
func concreteV(_: Slab<2, Int>) {}
|
||||
|
||||
11
test/DebugInfo/variant_enum.swift
Normal file
11
test/DebugInfo/variant_enum.swift
Normal file
@@ -0,0 +1,11 @@
|
||||
// RUN: %target-swift-frontend -primary-file %s -emit-ir -gdwarf-types -o - | %FileCheck %s
|
||||
// CHECK: !DICompositeType(tag: DW_TAG_variant_part, {{.*}}elements: ![[ELTS:[0-9]+]])
|
||||
// CHECK: ![[ELTS]] = !{![[ML:[0-9]+]], ![[MR:[0-9]+]]}
|
||||
// CHECK: ![[ML]] = !DIDerivedType(tag: DW_TAG_member, name: "left",
|
||||
// CHECK: ![[MR]] = !DIDerivedType(tag: DW_TAG_member, name: "right",
|
||||
enum Either<Left, Right> {
|
||||
case left(Left)
|
||||
case right(Right)
|
||||
}
|
||||
|
||||
let either = Either<Int, Double>.left(1234)
|
||||
Reference in New Issue
Block a user