Upgrade debug info tests to the new LLVM debug metadata format.

Thanks to Duncan for helping out with the upgrading!

Swift SVN r22512
This commit is contained in:
Adrian Prantl
2014-10-04 00:25:27 +00:00
parent 1bc0053a6c
commit d8551038fe
32 changed files with 111 additions and 134 deletions

View File

@@ -3,12 +3,12 @@
// RUN: %swift -emit-ir -module-name Foo %s -I %S -enable-source-import -g -o - | FileCheck %s
// RUN: %swift -c -module-name Foo %s -I %S -enable-source-import -g -o - | llvm-dwarfdump - | FileCheck --check-prefix=DWARF %s
// CHECK-DAG: ![[FOOMODULE:[0-9]+]] = {{.*}}[ DW_TAG_module ] [Foo]
// CHECK-DAG: metadata ![[THISFILE:[0-9]+]], metadata ![[FOOMODULE]], i32 1} ; [ DW_TAG_imported_module ]
// CHECK-DAG: metadata !{metadata !"0x3a\001\00", metadata ![[THISFILE:[0-9]+]], metadata ![[FOOMODULE]]} ; [ DW_TAG_imported_module ]
// CHECK-DAG: ![[THISFILE]] = metadata {{.*}}[ DW_TAG_file_type ] [{{.*}}test/DebugInfo/Imports.swift]
// CHECK-DAG: ![[SWIFTFILE:[0-9]+]] = {{.*}}[ DW_TAG_file_type ]{{.*}}Swift.swiftmodule
// CHECK-DAG: ![[SWIFTMODULE:[0-9]+]] = {{.*}}[ DW_TAG_module ] [Swift]
// CHECK-DAG: metadata ![[SWIFTFILE]], metadata ![[SWIFTMODULE]], i32 0} ; [ DW_TAG_imported_module ]
// CHECK-DAG: metadata ![[BASICFILE:[0-9]+]], metadata ![[BASICMODULE:[0-9]+]], i32 [[@LINE+3]]} ; [ DW_TAG_imported_module ]
// CHECK-DAG: metadata !{metadata !"0x3a\000\00", metadata ![[SWIFTFILE]], metadata ![[SWIFTMODULE]]} ; [ DW_TAG_imported_module ]
// CHECK-DAG: metadata !{metadata !"0x3a\00[[@LINE+3]]\00", metadata ![[BASICFILE:[0-9]+]], metadata ![[BASICMODULE:[0-9]+]]} ; [ DW_TAG_imported_module ]
// CHECK-DAG: ![[BASICFILE]] = {{.*}}basic.swift
// CHECK-DAG: ![[BASICMODULE]] = {{.*}}[ DW_TAG_module ] [basic]
import basic

View File

@@ -2,7 +2,7 @@
func main() {
// CHECK: call void @llvm.dbg.declare(metadata !{%"protocol<>"* {{.*}}}, metadata ![[S:.*]], metadata !{{[0-9]+}}), !dbg ![[DBG:.*]]
// CHECK: ![[S]] ={{.*}}[ DW_TAG_auto_variable ] [s] [line [[@LINE+3]]]
// CHECK: ![[SCOPE:.*]] = {{.*}}i32 2, i32 13, i32 0} ; [ DW_TAG_lexical_block ]
// CHECK: ![[SCOPE:.*]] = metadata !{metadata !"0xb\002\0013\000"{{.*}}} ; [ DW_TAG_lexical_block ]
// CHECK: ![[DBG]] = metadata !{i32 [[@LINE+1]], i32 6, metadata ![[SCOPE]], null}
var s : Any = "hello world"
var n : Any = 12

View File

@@ -9,12 +9,12 @@ protocol RandomAccessIndexType : IntegerArithmeticType {
class func uncheckedSubtract(lhs: Self, rhs: Self) -> (Distance, Bool)
}
// CHECK: null, null, metadata ![[TT:.*]]} ; [ DW_TAG_structure_type ] [_TtTQQq_F9archetype16ExistentialTuple{{.*}}]
// CHECK: metadata ![[TT:[^,]+]]} ; [ DW_TAG_structure_type ] [_TtTQQq_F9archetype16ExistentialTuple{{.*}}]
// archetype.ExistentialTuple <A : RandomAccessIndexType, B>(x : A, y : A) -> B
// CHECK: _TF9archetype16ExistentialTuple{{.*}} [ DW_TAG_subprogram ] [line [[@LINE+1]]] [def] [ExistentialTuple]
func ExistentialTuple<T: RandomAccessIndexType>(x: T, y: T) -> T.Distance {
// (B, Swift.Bool)
// CHECK: metadata !"tmp", metadata {{.*}}, i32 [[@LINE+1]], metadata ![[TT]], i32 0, i32 0} ; [ DW_TAG_auto_variable ] [tmp]
// CHECK: metadata !"0x100\00tmp\00[[@LINE+1]]\000"{{.*}}, metadata ![[TT]]} ; [ DW_TAG_auto_variable ] [tmp]
var tmp : (T.Distance, Bool) = T.uncheckedSubtract(x, rhs: y)
return _overflowChecked((tmp.0, tmp.1))
}

View File

@@ -1,9 +1,9 @@
// RUN: %swift -target x86_64-apple-macosx10.9 %s -emit-ir -verify -g -o - | FileCheck %s
class C<A> {
// CHECK: null, null, metadata ![[A:.*]]} ; [ DW_TAG_structure_type ] [_TtQq_C11archetypes21C]
// CHECK: null, null, metadata ![[B:.*]]} ; [ DW_TAG_structure_type ] [_TtQq_FC11archetypes21C3foo{{.*}}]
// CHECK: i32 {{.*}}, metadata ![[A]], i32 0, i32 0} ; [ DW_TAG_arg_variable ] [x] [line [[@LINE+2]]]
// CHECK: metadata ![[B]], i32 0, i32 0} ; [ DW_TAG_arg_variable ] [y] [line [[@LINE+1]]]
// CHECK: null, null, metadata ![[A:[^,]+]]} ; [ DW_TAG_structure_type ] [_TtQq_C11archetypes21C]
// CHECK: null, null, metadata ![[B:[^,]+]]} ; [ DW_TAG_structure_type ] [_TtQq_FC11archetypes21C3foo{{.*}}]
// CHECK: metadata ![[A]]} ; [ DW_TAG_arg_variable ] [x] [line [[@LINE+2]]]
// CHECK: metadata ![[B]]} ; [ DW_TAG_arg_variable ] [y] [line [[@LINE+1]]]
func foo <B> (var x : A, var y : B)
{
println("hello world")

View File

@@ -8,9 +8,9 @@ func a(arg : Int)
}
// WTF, you ask? This field is ArgNo << 24 | LineNo!
// CHECK-DAG: i32 16{{.*}} [ DW_TAG_arg_variable ] [a] [line [[@LINE+3]]]
// CHECK-DAG: i32 33{{.*}} [ DW_TAG_arg_variable ] [b] [line [[@LINE+2]]]
// CHECK-DAG: i32 67{{.*}} [ DW_TAG_arg_variable ] [c] [line [[@LINE+1]]]
// CHECK-DAG: \0016{{.*}} [ DW_TAG_arg_variable ] [a] [line [[@LINE+3]]]
// CHECK-DAG: \0033{{.*}} [ DW_TAG_arg_variable ] [b] [line [[@LINE+2]]]
// CHECK-DAG: \0067{{.*}} [ DW_TAG_arg_variable ] [c] [line [[@LINE+1]]]
func many(a: Int, b: (Int, Int), c: Int) -> Int {
// CHECK-DAG: [ DW_TAG_auto_variable ] [i1] [line [[@LINE+1]]]
var i1 = a
@@ -24,10 +24,10 @@ func many(a: Int, b: (Int, Int), c: Int) -> Int {
class A {
var member : Int
// CHECK-DAG: i32 16{{.*}} [ DW_TAG_arg_variable ] [a] [line [[@LINE+1]]]
// CHECK-DAG: \0016{{.*}} [ DW_TAG_arg_variable ] [a] [line [[@LINE+1]]]
init(a: Int) { member = a }
// CHECK-DAG: i32 16{{.*}}[ DW_TAG_arg_variable ] [offset] [line [[@LINE+2]]]
// CHECK-DAG: \0016{{.*}}[ DW_TAG_arg_variable ] [offset] [line [[@LINE+2]]]
// CHECK-DAG: [ DW_TAG_arg_variable ] [self] [line [[@LINE+1]]]
func getValuePlus(offset: Int) -> Int {
// CHECK-DAG: [ DW_TAG_auto_variable ] [a] [line [[@LINE+1]]]
@@ -35,8 +35,8 @@ class A {
return a+offset
}
// CHECK-DAG: i32 16{{.*}}[ DW_TAG_arg_variable ] [factor] [line [[@LINE+3]]]
// CHECK-DAG: i32 33{{.*}}[ DW_TAG_arg_variable ] [offset] [line [[@LINE+2]]]
// CHECK-DAG: \0016{{.*}}[ DW_TAG_arg_variable ] [factor] [line [[@LINE+3]]]
// CHECK-DAG: \0033{{.*}}[ DW_TAG_arg_variable ] [offset] [line [[@LINE+2]]]
// CHECK-DAG: [ DW_TAG_arg_variable ] [self] [line [[@LINE+1]]]
func getValueTimesPlus(factor: Int, offset: Int) -> Int {
// CHECK-DAG: [ DW_TAG_auto_variable ] [a] [line [[@LINE+1]]]
@@ -46,7 +46,7 @@ class A {
return a*f+offset
}
// CHECK: i32 16{{.*}}[ DW_TAG_arg_variable ] [self] [line 50]
// CHECK: \0016{{.*}}[ DW_TAG_arg_variable ] [self] [line 50]
deinit {
println(member)
}
@@ -54,14 +54,14 @@ class A {
}
// Curried functions have their arguments backwards.
// CHECK: i32 16{{.*}} [ DW_TAG_arg_variable ] [b] [line [[@LINE+2]]]
// CHECK: i32 33{{.*}} [ DW_TAG_arg_variable ] [a] [line [[@LINE+1]]]
// CHECK: \0016{{.*}} [ DW_TAG_arg_variable ] [b] [line [[@LINE+2]]]
// CHECK: \0033{{.*}} [ DW_TAG_arg_variable ] [a] [line [[@LINE+1]]]
func uncurry (a: Int) (b: Int) -> (Int, Int) {
return (a, b)
}
// CHECK: i32 16{{.*}} [ DW_TAG_arg_variable ] [x] [line [[@LINE+2]]]
// CHECK: i32 33{{.*}} [ DW_TAG_arg_variable ] [y] [line [[@LINE+1]]]
// CHECK: \0016{{.*}} [ DW_TAG_arg_variable ] [x] [line [[@LINE+2]]]
// CHECK: \0033{{.*}} [ DW_TAG_arg_variable ] [y] [line [[@LINE+1]]]
func tuple(x: Int, y: (Int, Float, String)) -> Int {
return x+y.0;
}

View File

@@ -1,11 +1,11 @@
// RUN: %swift -target x86_64-apple-macosx10.9 %s -emit-ir -g -o - | FileCheck %s
// CHECK-DAG: {{.*}}i32 30,{{.*}}null, metadata ![[TY0:.*]]} ; [ DW_TAG_structure_type ] [{{.*}}ObjCClass{{.*}}] [line [[@LINE+1]]
// CHECK-DAG: \0030"{{.*}}, null, metadata ![[TY0:.*]]} ; [ DW_TAG_structure_type ] [{{.*}}ObjCClass{{.*}}] [line [[@LINE+1]]
@objc class ObjCClass {
@IBAction func click(_: AnyObject?) -> () {}
}
// DW_LANG_Swift = 0xa000 [FIXME: this number will change!]
// CHECK-DAG: ![[TY1:[0-9]+]] = {{.*}}i32 30,{{.*}} [ DW_TAG_structure_type ] [{{.*}}SwiftClass{{.*}}] [line [[@LINE+1]]
// CHECK-DAG: ![[TY1:[0-9]+]] = {{.*}}\0030"{{.*}} [ DW_TAG_structure_type ] [{{.*}}SwiftClass{{.*}}] [line [[@LINE+1]]
class SwiftClass {
@objc func objcmethod() -> () {}
func swiftmethod() -> () {}
@@ -18,7 +18,7 @@ class SwiftClass {
// an artificial variable.
// DISABLED: [ DW_TAG_variable ] [OBJC_METACLASS_$__TtC10attributes9ObjCClass]
// CHECK-DAG: i32 [[@LINE+1]], metadata ![[TY0]],{{.*}}[ DW_TAG_variable ] [{{.*}}strongRef0{{.*}}]
// CHECK-DAG: metadata !{metadata !"0x34\00strongRef0\00{{.*}}\00[[@LINE+1]]\000\001"{{, [^,]+, [^,]+}}, metadata ![[TY0]], {{.*}}[ DW_TAG_variable ] [{{.*}}strongRef0{{.*}}]
var strongRef0 : ObjCClass
var strongRef1 : SwiftClass = SwiftClass()

View File

@@ -21,7 +21,7 @@ func &&&&&(lhs: BooleanType, rhs: @autoclosure ()->BooleanType) -> Bool {
func call_me(var input: Int) -> Void {
// rdar://problem/14627460
// An autoclosure should have a line number in the debug info and a scope line of 0.
// CHECK-DAG: "_TFF11autoclosure7call_me{{.*}}"{{.*}}[ DW_TAG_subprogram ] [line [[@LINE+3]]] [def] [scope 0]
// CHECK-DAG: \00_TFF11autoclosure7call_me{{.*}} [ DW_TAG_subprogram ] [line [[@LINE+3]]] [def] [scope 0]
// But not in the line table.
// CHECK-DAG: ![[DBG]] = metadata !{i32 [[@LINE+1]], i32
if input != 0 &&&&& ( get_truth (input * 2 + 1) > 0 )

View File

@@ -13,10 +13,10 @@
//
// CHECK: foo
// CHECK-DAG: ret{{.*}}, !dbg ![[RET:[0-9]+]]
// CHECK-DAG: ![[FOO:[0-9]+]] ={{.*}}i32 [[@LINE+2]], metadata ![[FOOTYPE:[0-9]+]],{{.*}} [ DW_TAG_subprogram ] {{.*}} [foo]
// CHECK-DAG: ![[FOO:[0-9]+]] ={{.*}}!"0x2e\00{{[^"]+}}\00[[@LINE+2]]"{{, [^,]+, [^,]+}}, metadata ![[FOOTYPE:[0-9]+]],{{.*}} [ DW_TAG_subprogram ] {{.*}} [foo]
public
func foo(var a: Int, var b: Int) -> Int {
// CHECK-DAG: metadata ![[FOO]], i32 [[@LINE-1]], i32 41{{.*}}DW_TAG_lexical_block
// CHECK-DAG: !"0xb\00[[@LINE-1]]\0041\000"{{, [^,]+}}, metadata ![[FOO]]} ; [ DW_TAG_lexical_block ]
// CHECK-DAG: ![[ASCOPE:.*]] = metadata !{i32 [[@LINE-2]], i32 14, metadata ![[FOO]], null}
// Check that a is the first and b is the second argument.
// CHECK-DAG: store i64 %0, i64* [[AVAL:.*]], align 8
@@ -28,7 +28,7 @@ func foo(var a: Int, var b: Int) -> Int {
// CHECK-DAG: ![[AARG]] ={{.*}}[ DW_TAG_arg_variable ] [a]
// CHECK-DAG: ![[BARG]] ={{.*}}[ DW_TAG_arg_variable ] [b]
if b != 0 {
// CHECK-DAG: i32 [[@LINE-1]],{{.*}}DW_TAG_lexical_block
// CHECK-DAG: \00[[@LINE-1]]\00{{.*}}DW_TAG_lexical_block
// Transparent inlined multiply:
// CHECK-DAG: smul{{.*}}, !dbg ![[DIV:[0-9]+]]
// CHECK-DAG: [[DIV]] = metadata !{i32 [[@LINE+4]], i32 15,
@@ -37,10 +37,10 @@ func foo(var a: Int, var b: Int) -> Int {
// CHECK-NOSIL: [[DIV]] = metadata !{i32 [[@LINE+1]], i32 15,
return a*b
} else {
// CHECK-DAG: [[PARENT:[0-9]+]] = {{.*}}metadata !{{[0-9]+}}, i32 [[@LINE-1]], i32 13{{.*}}DW_TAG_lexical_block
// CHECK-DAG: [[PARENT:[0-9]+]] = {{.*}}\00[[@LINE-1]]\0013\00{{.*}}DW_TAG_lexical_block
var c = 42
if a == 0 {
// CHECK-DAG: metadata ![[PARENT]], i32 [[@LINE-1]], i32 18{{.*}}DW_TAG_lexical_block
// CHECK-DAG: \00[[@LINE-1]]\0018\00{{.*}}, metadata ![[PARENT]]} ; [ DW_TAG_lexical_block ]
// What about a nested scope?
return 0
}
@@ -50,20 +50,20 @@ func foo(var a: Int, var b: Int) -> Int {
// CHECK-DAG: Swift version{{.*}}x86_64-apple-macosx10.9{{.*}}-emit-ir{{.*}} [ DW_TAG_compile_unit ] [{{.*}}basic.swift]
// top_level_code is not an artificial function (Flags & 64 == 0).
// LinkageName Line Type local isDefn 0 0 ScopeLine Flags optimized
// CHECK-DAG: "top_level_code", i32 1, metadata !{{[0-9]+}}, i1 false, i1 true, i32 0, i32 0, null, i32 0, i1 false, void{{.*}} [ DW_TAG_subprogram ]
// CHECK-DAG: "main"{{.*}} [ DW_TAG_subprogram ]
// CHECK-DAG: metadata !"0x2e\00\00\00top_level_code\001\000\001\000\000\000\000\000"{{.*}} [ DW_TAG_subprogram ]
// CHECK-DAG: \00main\00{{.*}} [ DW_TAG_subprogram ]
// Function type for foo.
// CHECK-DAG: ![[FOOTYPE]] = {{.*}} metadata ![[PARAMTYPES:[0-9]+]],{{.*}}DW_TAG_subroutine_type
// CHECK-DAG: ![[PARAMTYPES]] = metadata !{metadata !"_TtSi", metadata !"_TtSi", metadata !"_TtSi"}
// Import of the main module.
// CHECK-DAG: ![[MAINFILE:[0-9]+]] = {{.*}}DW_TAG_file_type{{.*}}basic.swift
// CHECK-DAG: metadata ![[MAINFILE]], metadata ![[MAINMODULE:[0-9]+]], i32 1} ; [ DW_TAG_imported_module ]
// CHECK-DAG: \001\00"{{.*}}, metadata ![[MAINFILE]], metadata ![[MAINMODULE:[0-9]+]]} ; [ DW_TAG_imported_module ]
// CHECK-DAG: ![[MAINMODULE]] = {{.*}}[ DW_TAG_module ] [basic]
// Import of the swift standard library.
// CHECK-DAG: ![[SWIFTFILE:[0-9]+]] = {{.*}}DW_TAG_file_type{{.*}}Swift.swiftmodule
// CHECK-DAG: metadata ![[SWIFTFILE]], metadata ![[SWIFTMODULE:[0-9]+]], i32 0} ; [ DW_TAG_imported_module ]
// CHECK-DAG: \000\00"{{.*}}, metadata ![[SWIFTFILE]], metadata ![[SWIFTMODULE:[0-9]+]]} ; [ DW_TAG_imported_module ]
// CHECK-DAG: ![[SWIFTMODULE]] = {{.*}}[ DW_TAG_module ] [Swift]
// Filenames

View File

@@ -26,16 +26,16 @@ func main() -> Void
|| count(rhs.unicodeScalars) == random_int
{
// Ensure the two local_vars are in different lexical scopes.
// CHECK-DAG: metadata !{{{.*}}, metadata ![[THENSCOPE:.*]], metadata !"local_var", {{.*}}} ; [ DW_TAG_auto_variable ] [local_var] [line [[@LINE+2]]]
// CHECK-DAG: ![[THENSCOPE]] = metadata !{{{.*}}, i32 [[@LINE-3]], {{.*}}} ; [ DW_TAG_lexical_block ]
// CHECK-DAG: metadata !"0x100\00local_var\00[[@LINE+2]]\000", metadata ![[THENSCOPE:[0-9]+]], {{.*}}} ; [ DW_TAG_auto_variable ] [local_var] [line [[@LINE+2]]]
// CHECK-DAG: ![[THENSCOPE]] = {{.*}}\00[[@LINE-3]]\00{{.*}}} ; [ DW_TAG_lexical_block ]
var local_var : Int = 10
print ("I have an int here \(local_var).\n")
return false
}
else
{
// CHECK-DAG: metadata !{{{.*}}, metadata ![[ELSESCOPE:.*]], metadata !"local_var", {{.*}}} ; [ DW_TAG_auto_variable ] [local_var] [line [[@LINE+2]]]
// CHECK-DAG: ![[ELSESCOPE]] = metadata !{{{.*}}, i32 [[@LINE-2]], {{.*}}} ; [ DW_TAG_lexical_block ]
// CHECK-DAG: metadata !"0x100\00local_var\00[[@LINE+2]]\000", metadata ![[ELSESCOPE:[0-9]+]], {{.*}}} ; [ DW_TAG_auto_variable ] [local_var] [line [[@LINE+2]]]
// CHECK-DAG: ![[ELSESCOPE]] = {{.*}}\00[[@LINE-2]]\00{{.*}}} ; [ DW_TAG_lexical_block ]
var local_var : String = "g"
print ("I have another string here \(local_var).\n")
// Assign to all the captured variables to inhibit capture promotion.

View File

@@ -12,7 +12,7 @@ func foldl1<T>(list: [T], function: (a: T, b: T) -> T) -> T {
var a = [Int](count: 10, repeatedValue: 0)
for i in 0..<10 { a[i] = i }
// A closure is not an artificial function (the last i32 0).
// CHECK: metadata !"_TF7closureU_FTSiSi_Si", i32 [[@LINE+3]], metadata !{{[0-9]+}}, i1 false, i1 true, i32 0, i32 0, null, i32 0, i1 false, {{.*}}[ DW_TAG_subprogram ]
// CHECK: metadata !"0x2e\00\00\00_TF7closureU_FTSiSi_Si\0018\000\001\000\000\000\000\0018", {{.*}}[ DW_TAG_subprogram ]
// CHECK: [ DW_TAG_arg_variable ] [$0] [line [[@LINE+2]]]
// CHECK: [ DW_TAG_arg_variable ] [$1] [line [[@LINE+1]]]
var sum:Int = foldl1(a, { $0 + $1 })

View File

@@ -10,32 +10,32 @@ func baz(i: Float) -> Int { return 0; }
func barz(i: Float, j: Float) -> Int { return 0; }
func main() -> Int {
// CHECK-DAG: i32 {{.*}}, metadata ![[BARPT:.*]], i32 0, i32 0} ; [ DW_TAG_auto_variable ] [bar_function_pointer] [line [[@LINE+1]]]
// CHECK-DAG: metadata !"[[BARPT:[^,]+]]"} ; [ DW_TAG_auto_variable ] [bar_function_pointer] [line [[@LINE+1]]]
var bar_function_pointer = bar
// CHECK-DAG: [[BARPT]]{{.*}}, metadata ![[BARMEMBERS:[0-9]+]], i32 30,{{.*}} ; [ DW_TAG_structure_type ] [_TtFT_T_]
// CHECK-DAG: \0030"{{, [^,]+, [^,]+, [^,]+}}, metadata ![[BARMEMBERS:[0-9]+]]{{.*}} ; [ DW_TAG_structure_type ] {{.*}}[[BARPT]]
// CHECK-DAG: ![[BARMEMBERS]] = metadata !{metadata ![[BARMEMBER:.*]]}
// CHECK-DAG: ![[BARMEMBER]] = {{.*}}metadata ![[BARPTR:[0-9]+]]} ; [ DW_TAG_member ] [pointer]
// CHECK-DAG: ![[BARPTR]] = {{.*}} metadata ![[BART:[0-9]+]]} ; [ DW_TAG_pointer_type ]
// CHECK-DAG: ![[BART]] = {{.*}}null, metadata ![[BARARGS:.*]], i32 0, null, null, null} ; [ DW_TAG_subroutine_type ]
// CHECK-DAG: ![[BART]] = {{.*}}, metadata ![[BARARGS:[0-9]+]], {{.*}}} ; [ DW_TAG_subroutine_type ]
// CHECK-DAG: ![[BARARGS]] = metadata !{metadata !"_TtT_"}
bar_function_pointer();// Set breakpoint here
// CHECK-DAG: i32 {{.*}}, metadata ![[BAZPT:.*]], i32 0, i32 0} ; [ DW_TAG_auto_variable ] [baz_function_pointer]
// CHECK-DAG: [[BAZPT]]{{.*}}, metadata ![[BAZMEMBERS:[0-9]+]], i32 30,{{.*}} ; [ DW_TAG_structure_type ] [_TtFSfSi]
// CHECK-DAG: metadata !"[[BAZPT:[^,]+]]"} ; [ DW_TAG_auto_variable ] [baz_function_pointer]
// CHECK-DAG: \0030"{{, [^,]+, [^,]+, [^,]+}}, metadata ![[BAZMEMBERS:[0-9]+]], {{.*}}} ; [ DW_TAG_structure_type ] {{.*}}[[BAZPT]]
// CHECK-DAG: ![[BAZMEMBERS]] = metadata !{metadata ![[BAZMEMBER:.*]]}
// CHECK-DAG: ![[BAZMEMBER]] = {{.*}}metadata ![[BAZPTR:[0-9]+]]} ; [ DW_TAG_member ] [pointer]
// CHECK-DAG: ![[BAZPTR]] = {{.*}} metadata ![[BAZT:[0-9]+]]} ; [ DW_TAG_pointer_type ]
// CHECK-DAG: ![[BAZT]] = {{.*}}metadata ![[BAZARGS:.*]], i32 0, null, null, null} ; [ DW_TAG_subroutine_type ]
// CHECK-DAG: ![[BAZT]] = {{.*}}metadata ![[BAZARGS:.*]], null, null, null} ; [ DW_TAG_subroutine_type ]
// CHECK-DAG: ![[BAZARGS]] = metadata !{metadata !"_TtSi", metadata !"_TtSf"}
var baz_function_pointer = baz
baz_function_pointer(2.89)
// CHECK-DAG: i32 {{.*}}, metadata ![[BARZPT:.*]], i32 0, i32 0} ; [ DW_TAG_auto_variable ] [barz_function_pointer]
// CHECK-DAG: [[BARZPT]]{{.*}}, metadata ![[BARZMEMBERS:[0-9]+]], i32 30,{{.*}} ; [ DW_TAG_structure_type ] [_TtFTSfSf_Si]
// CHECK-DAG: metadata !"[[BARZPT:[^,]+]]"} ; [ DW_TAG_auto_variable ] [barz_function_pointer]
// CHECK-DAG: \0030"{{, [^,]+, [^,]+, [^,]+}}, metadata ![[BARZMEMBERS:[0-9]+]], {{.*}}} ; [ DW_TAG_structure_type ] {{.*}}[[BARZPT]]
// CHECK-DAG: ![[BARZMEMBERS]] = metadata !{metadata ![[BARZMEMBER:.*]]}
// CHECK-DAG: ![[BARZMEMBER]] = {{.*}}metadata ![[BARZPTR:[0-9]+]]} ; [ DW_TAG_member ] [pointer]
// CHECK-DAG: ![[BARZPTR]] = {{.*}} metadata ![[BARZT:[0-9]+]]} ; [ DW_TAG_pointer_type ]
// CHECK-DAG: ![[BARZT]] = {{.*}}metadata ![[BARZARGS:.*]], i32 0, null, null, null} ; [ DW_TAG_subroutine_type ]
// CHECK-DAG: ![[BARZT]] = {{.*}}metadata ![[BARZARGS:.*]], null, null, null} ; [ DW_TAG_subroutine_type ]
// CHECK-DAG: ![[BARZARGS]] = metadata !{metadata !"_TtSi", metadata !"_TtSf", metadata !"_TtSf"}
var barz_function_pointer = barz
return barz_function_pointer(2.89, -1.0)

View File

@@ -10,13 +10,13 @@ class AnotherClass : AProtocol {
}
// CHECK-DAG: null, metadata ![[PROTOS:[0-9]+]], i32 30, null, null, metadata !"_TtQq_F12generic_args9aFunction{{.*}}"} ; [ DW_TAG_structure_type ] [_TtQq_F12generic_args{{.*}}]
// CHECK-DAG: \0030"{{.*}}, null, metadata ![[PROTOS:[0-9]+]], null, null, metadata !"_TtQq_F12generic_args9aFunction{{.*}}"} ; [ DW_TAG_structure_type ] [_TtQq_F12generic_args{{.*}}]
// CHECK-DAG: ![[PROTOS]] = metadata !{metadata ![[INHERIT:.*]]}
// CHECK-DAG: ![[INHERIT]] = {{.*}}metadata ![[PROTOCOL:.*]]} ; [ DW_TAG_inheritance ]
// CHECK-DAG: null, null, metadata ![[PROTOCOL]]} ; [ DW_TAG_structure_type ] [_TtMP12generic_args9AProtocol_]
// CHECK-DAG: i32 16{{.*}}, metadata ![[T:.*]], i32 0, i32 0} ; [ DW_TAG_arg_variable ] [x] [line [[@LINE+4]]]
// CHECK-DAG: \00x\0016{{.*}}, metadata ![[T:.*]]} ; [ DW_TAG_arg_variable ] [x] [line [[@LINE+4]]]
// CHECK-DAG: ![[T]]} ; [ DW_TAG_structure_type ] [_TtQq_F12generic_args9aFunction{{.*}}]
// CHECK-DAG: i32 33{{.*}}, metadata ![[Q:.*]], i32 0, i32 0} ; [ DW_TAG_arg_variable ] [y] [line [[@LINE+2]]]
// CHECK-DAG: \00y\0033{{.*}}, metadata ![[Q:.*]]} ; [ DW_TAG_arg_variable ] [y] [line [[@LINE+2]]]
// CHECK-DAG: ![[Q]]} ; [ DW_TAG_structure_type ] [_TtQq0_F12generic_args9aFunction{{.*}}]
func aFunction<T : AProtocol, Q : AProtocol>(var x: T, var y: Q, z: String) {
println("I am in \(z): \(x.f()) \(y.f())")
@@ -32,7 +32,7 @@ struct Wrapper<T: AProtocol> {
}
func passthrough(t: T) -> T {
// CHECK-DAG: i32 [[@LINE+1]], metadata ![[LOCAL_T:.*]], i32 0, i32 0} ; [ DW_TAG_auto_variable ] [local]
// CHECK-DAG: \00local\00[[@LINE+1]]\000"{{.*}}, metadata ![[LOCAL_T:[^,]+]]} ; [ DW_TAG_auto_variable ] [local]
var local = t
// The type of local should have the context Wrapper<T>.
// CHECK-DAG: [[LOCAL_T]]} ; [ DW_TAG_structure_type ] [_TtQq_V12generic_args7Wrapper]

View File

@@ -13,7 +13,7 @@ func unwrapTrivialGeneric<T, U>(tg: TrivialGeneric<T, U>) -> (T, U) {
func wrapTrivialGeneric<T, U>(t: T, u: U) -> TrivialGeneric<T, U> {
return .x(t, u)
}
// CHECK: i32 [[@LINE+2]], metadata ![[TGT:.*]], i32 0{{.*}}[ DW_TAG_variable ] [tg] [line [[@LINE+2]]] [def]
// CHECK: \00[[@LINE+2]]\000\001"{{, [^,]+, [^,]+}}, metadata ![[TGT:[^,]+]]{{.*}}} ; [ DW_TAG_variable ] [tg] [line [[@LINE+2]]] [def]
// CHECK: ![[TGT]] = {{.*}} [ DW_TAG_union_type ] [_TtGO12generic_enum14TrivialGenericSiSS_]
var tg : TrivialGeneric<Int, String> = .x(23, "skidoo")
switch tg {

View File

@@ -2,7 +2,7 @@
// RUN: mkdir -p %t
// RUN: %target-build-swift -module-cache-path %t/clang-module-cache -emit-ir -g %s -o - | FileCheck %s
// CHECK: i32 {{.*}}, metadata !{{[0-9]+}}, metadata ![[ObjectiveC:[0-9]+]], {{.*}}metadata !"_TtCSo8Protocol"} ; [ DW_TAG_structure_type ] [Protocol]
// CHECK: \0030"{{, [^,]+}}, metadata ![[ObjectiveC:[0-9]+]], {{.*}}metadata !"_TtCSo8Protocol"} ; [ DW_TAG_structure_type ] [Protocol]
// CHECK: ![[ObjectiveC]] = metadata !{{.*}} ; [ DW_TAG_module ] [ObjectiveC] [line 1]
import Foundation

View File

@@ -5,7 +5,7 @@
// CHECK: define i32 @main
// CHECK: tail call { i64, i1 } @llvm.smul.with.overflow.i64(i64 %[[C:.*]], i64 %[[C]]), !dbg ![[MULSCOPE:.*]]
// CHECK-DAG: ![[TOPLEVEL:.*]] = {{.*}}; [ DW_TAG_file_type ] [{{.*}}/inlinescopes.swift]
// CHECK-DAG: ![[MAIN:.*]] = {{.*}}"main"{{.*}}[ DW_TAG_subprogram ]
// CHECK-DAG: ![[MAIN:.*]] = {{.*}}\00main\00{{.*}}[ DW_TAG_subprogram ]
// CHECK-DAG: ![[INLINED_TOPLEVEL:.*]] = metadata !{i32 0, i32 0, metadata ![[MAIN:.*]], null}
func square(x : Int) -> Int {

View File

@@ -11,9 +11,9 @@ typealias MyFloat = Float
// CHECK: call void @llvm.dbg.declare(metadata !{{{.*}} %[[ALLOCB]]}, metadata ![[B:.*]], metadata !{{[0-9]+}})
// CHECK: call void @llvm.dbg.declare(metadata !{{{.*}} %[[ALLOCA]]}, metadata
// CHECK: ![[REFINT:.*]] = {{.*}}[ DW_TAG_structure_type ] [_TtRSi]
// CHECK: ![[B]] = {{.*}}metadata ![[MYFLOAT:.*]], i32 0, i32 0} ; [ DW_TAG_arg_variable ] [b] [line [[@LINE+4]]]
// CHECK: ![[B]] = {{.*}}metadata ![[MYFLOAT:.*]]} ; [ DW_TAG_arg_variable ] [b] [line [[@LINE+4]]]
// CHECK: ![[MYFLOAT]] = {{.*}}[ DW_TAG_typedef ] [_Tta5inout7MyFloat] {{.*}} [from _TtSf]
// CHECK: ![[A:[0-9]+]] = {{.*}}metadata !"_TtRSi", i32 0, i32 0} ; [ DW_TAG_arg_variable ] [a] [line [[@LINE+1]]]
// CHECK: ![[A:[0-9]+]] = {{.*}}metadata !"_TtRSi"} ; [ DW_TAG_arg_variable ] [a] [line [[@LINE+1]]]
func modifyFooHeap(inout a: Int,
var b: MyFloat)
{
@@ -26,8 +26,8 @@ func modifyFooHeap(inout a: Int,
}
func modifyFoo(inout u: Int,
// CHECK: metadata ![[MYFLOAT]], i32 0, i32 0} ; [ DW_TAG_arg_variable ] [v] [line [[@LINE+2]]]
// CHECK: metadata !"_TtRSi", i32 0, i32 0} ; [ DW_TAG_arg_variable ] [u] [line [[@LINE-2]]]
// CHECK: metadata ![[MYFLOAT]]} ; [ DW_TAG_arg_variable ] [v] [line [[@LINE+2]]]
// CHECK: metadata !"_TtRSi"} ; [ DW_TAG_arg_variable ] [u] [line [[@LINE-2]]]
var v: MyFloat)
{
if (v > 2.71) {

View File

@@ -19,13 +19,13 @@ struct Struct {
}
func foo (inout x : Class) {
// CHECK: i32 0, i32 0} ; [ DW_TAG_arg_variable ] [x] [line [[@LINE-1]]]
// CHECK: \000"{{.*}}[ DW_TAG_arg_variable ] [x] [line [[@LINE-1]]]
println(x.ivar)
x.ivar++ // Set breakpoint here
}
func foo(inout x : Struct) {
// CHECK: i32 0, i32 0} ; [ DW_TAG_arg_variable ] [x] [line [[@LINE-1]]]
// CHECK: \000"{{.*}}[ DW_TAG_arg_variable ] [x] [line [[@LINE-1]]]
println(x.ivar)
x.ivar++ // Set breakpoint here
}

View File

@@ -19,7 +19,7 @@ class MyClass {
// Test that image is in an alloca, but not an indirect location.
// CHECK: store i64 %0, i64* %[[ALLOCA:.*]],
// CHECK: call void @llvm.dbg.declare(metadata !{i64* %[[ALLOCA]]}, metadata ![[IMAGE:.*]], metadata !{{[0-9]+}})
// CHECK: ![[IMAGE]] = {{.*}} i32 0} ; [ DW_TAG_arg_variable ] [image] [line [[@LINE-5]]]
// CHECK: ![[IMAGE]] = {{.*}}\000"{{.*}}} ; [ DW_TAG_arg_variable ] [image] [line [[@LINE-5]]]
let filter = CIFilter(name: "CIGaussianBlur")
return image
}

View File

@@ -2,26 +2,26 @@
// Type:
// Swift.Dictionary<Swift.Int64, Swift.String>
// CHECK: null, null, metadata ![[DT:.*]]} ; [ DW_TAG_structure_type ] [Dictionary]
// CHECK: null, null, metadata ![[TT1:.*]]} ; [ DW_TAG_structure_type ] [_TtT4NameSS2IdSi_]
// CHECK: null, null, metadata ![[TT2:.*]]} ; [ DW_TAG_structure_type ] [_TtTSS2IdSi_]
// CHECK: metadata ![[DT:[^,]+]]} ; [ DW_TAG_structure_type ] [Dictionary]
// CHECK: metadata ![[TT1:[^,]+]]} ; [ DW_TAG_structure_type ] [_TtT4NameSS2IdSi_]
// CHECK: metadata ![[TT2:[^,]+]]} ; [ DW_TAG_structure_type ] [_TtTSS2IdSi_]
// Variable:
// mangling.myDict : Swift.Dictionary<Swift.Int64, Swift.String>
// CHECK: metadata !"myDict", metadata !"_Tv8mangling6myDictGVSs10DictionarySiSS_", metadata !{{.*}}, i32 [[@LINE+1]], metadata ![[DT]], i32 0, {{.*}} [ DW_TAG_variable ] [myDict]
// CHECK: \00myDict\00_Tv8mangling6myDictGVSs10DictionarySiSS_\00[[@LINE+1]]\000\001"{{, [^,]+, [^,]+}}, metadata ![[DT]], {{.*}} [ DW_TAG_variable ] [myDict]
var myDict = Dictionary<Int, String>()
myDict[12] = "Hello!"
// mangling.myTuple1 : (Name : Swift.String, Id : Swift.Int64)
// CHECK: metadata !"myTuple1", metadata !"_Tv8mangling8myTuple1T4NameSS2IdSi_", metadata !{{.*}}, i32 [[@LINE+1]], metadata ![[TT1]], i32 0, {{.*}} [ DW_TAG_variable ] [myTuple1]
// CHECK: \00myTuple1\00_Tv8mangling8myTuple1T4NameSS2IdSi_\00[[@LINE+1]]\000\001"{{, [^,]+, [^,]+}}, metadata ![[TT1]], {{.*}} [ DW_TAG_variable ] [myTuple1]
var myTuple1 : (Name: String, Id: Int) = ("A", 1)
// mangling.myTuple2 : (Swift.String, Id : Swift.Int64)
// CHECK: metadata !"myTuple2", metadata !"_Tv8mangling8myTuple2TSS2IdSi_", metadata !{{.*}}, i32 [[@LINE+1]], metadata ![[TT2]], i32 0, {{.*}} [ DW_TAG_variable ] [myTuple2]
// CHECK: \00myTuple2\00_Tv8mangling8myTuple2TSS2IdSi_\00[[@LINE+1]]\000\001"{{, [^,]+, [^,]+}}, metadata ![[TT2]], {{.*}} [ DW_TAG_variable ] [myTuple2]
var myTuple2 : ( String, Id: Int) = ("B", 2)
// mangling.myTuple3 : (Swift.String, Swift.Int64)
// FIXME: Pending <rdar://problem/16860038>
// FIXME: metadata !"myTuple3", metadata !"_Tv8mangling8myTuple3TSSSi_", metadata !{{.*}}, i32 [[@LINE+1]], metadata ![[TT3]], i32 0, {{.*}} [ DW_TAG_variable ] [myTuple3]
// FIXME: \00myTuple3\00_Tv8mangling8myTuple3TSSSi_\00[[@LINE+1]]\000\001"{{, [^,]+, [^,]+}}, metadata ![[TT3]], {{.*}} [ DW_TAG_variable ] [myTuple3]
// var myTuple3 : ( String, Int) = ("C", 3)
// println({ $$0.1 }(myTuple3))

View File

@@ -3,7 +3,7 @@ func outer(a: Int) -> Int {
// Inner functions have a linkage name of "closure[0-9]+", but
// their DW_AT_name is preserved.
// CHECK: i1 false, i1 true, i32 0, i32 0, null, i32 0,{{.*}}[ DW_TAG_subprogram ] [line [[@LINE+1]]] [def] {{.*}}[inner]
// CHECK: \00_TFF16nested_functions5outerFSiSiL_5innerfSiSi\00[[@LINE+1]]\000\001\000\000\000\00{{.*}}[ DW_TAG_subprogram ] [line [[@LINE+1]]] [def] {{.*}}[inner]
func inner(b: Int) -> Int {
return a+b
}

View File

@@ -26,7 +26,7 @@ class SomeOtherClass : SomeClass {
override func f() -> Int { return 1 }
}
// This is an indirect value.
// CHECK-DAG: i32 30, null, null, metadata !"_TtP5pcomp9SomeProto_"} ; [ DW_TAG_structure_type ] [SomeProto]
// CHECK-DAG: \0030{{.*}}metadata !"_TtP5pcomp9SomeProto_"} ; [ DW_TAG_structure_type ] [SomeProto]
func main() {
var p : SomeProto = SomeOtherClass()
println("\(p.f())")

View File

@@ -33,7 +33,7 @@ func main() -> Int {
}
// Self should be artificial.
// CHECK: , i32 64, i32 0} ; [ DW_TAG_arg_variable ] [self] [line 16]
// CHECK: \0064"{{.*}}} ; [ DW_TAG_arg_variable ] [self] [line 16]
// CHECK: ![[LOC]] ={{.*}}[ DW_TAG_auto_variable ] [loc2d] [line [[@LINE-9]]]

View File

@@ -1,6 +1,6 @@
// RUN: %swift -target x86_64-apple-macosx10.9 %s -emit-ir -g -o - | FileCheck %s
// FIXME: Should be DW_TAG_interface_type
// CHECK: null, null, metadata ![[PT:.*]]} ; [ DW_TAG_structure_type ] [IGiveOutInts]
// CHECK: metadata ![[PT:[^,]+]]} ; [ DW_TAG_structure_type ] [IGiveOutInts]
protocol IGiveOutInts {
func callMe() -> Int
}
@@ -23,7 +23,7 @@ class AFancierImplementor : IGiveOutInts {
}
func printSomeNumbers(var gen: IGiveOutInts) {
// CHECK: metadata !"gen", metadata !{{.*}}, i32 {{.*}}, metadata ![[PT]], i32 0, i32 0} ; [ DW_TAG_arg_variable ] [gen] [line [[@LINE-1]]]
// CHECK: metadata ![[PT]]} ; [ DW_TAG_arg_variable ] [gen] [line [[@LINE-1]]]
var i = 1
while i < 3 {
println("\(gen.callMe())")

View File

@@ -14,7 +14,7 @@ class AppDelegate {
var window: UIWindow?
func application() -> Bool {
// CHECK-DAG: i32 [[@LINE+1]], i32 13, i32 {{[0-9]+}}} ; [ DW_TAG_lexical_block ]
// CHECK-DAG: "0xb\00[[@LINE+1]]\0013{{.*}}; [ DW_TAG_lexical_block ]
if true {
// Verify that all debug line table entries for the expression
// below are in the same scope.

View File

@@ -1,5 +1,5 @@
// Check that the sdk and resource dirs end up in the debug info.
// RUN: %swiftc_driver %s -emit-ir -g -o - | FileCheck %s
// RUN: %swiftc_driver %s -emit-ir -sdk "/Weird Location/SDK" -g -o - | FileCheck --check-prefix CHECK-EXPLICIT %s
// CHECK: metadata !"Swift version {{.*}}", i1 false, metadata !"{{.*}} -resource-dir {{.*}}"
// CHECK-EXPLICIT: metadata !"Swift version {{.*}}", i1 false, metadata !"{{.*}} -sdk \22/Weird Location/SDK\22{{.*}} -resource-dir {{.*}}"
// CHECK: \00Swift version {{.*}}\000{{.*}} -resource-dir {{.*}}"
// CHECK-EXPLICIT: \00Swift version {{.*}}\000{{.*}} -sdk \22/Weird Location/SDK\22{{.*}} -resource-dir {{.*}}"

View File

@@ -15,7 +15,7 @@ func f() {
// CHECK: define hidden void @_TFV4self11stuffStructCfMS0_FT_S0_(%V4self11stuffStruct* noalias sret) {
// CHECK-NEXT: entry:
// CHECK-NEXT: %[[ALLOCA:.*]] = alloca %V4self11stuffStruct, align 8
// CHECK: call void @llvm.dbg.declare(metadata !{%V4self11stuffStruct* %[[ALLOCA]]}, metadata ![[SELF:.*]], metadata !{{[0-9]+}}), !dbg
// CHECK: null, null, metadata ![[STUFFSTRUCT:.*]]} ; [ DW_TAG_structure_type ] [stuffStruct]
// CHECK: ![[SELF]] = {{.*}}, metadata ![[STUFFSTRUCT]], i32 0, i32 0} ; [ DW_TAG_auto_variable ] [self]
// CHECK: call void @llvm.dbg.declare(metadata !{%V4self11stuffStruct* %[[ALLOCA]]}, metadata ![[SELF:.*]], metadata !{{[0-9]+}}), !dbg
// CHECK: metadata ![[STUFFSTRUCT:[^,]+]]} ; [ DW_TAG_structure_type ] [stuffStruct]
// CHECK: ![[SELF]] = {{.*}}metadata ![[STUFFSTRUCT]]} ; [ DW_TAG_auto_variable ] [self]

View File

@@ -10,5 +10,5 @@ func test(var x : A) {}
// CHECK: define hidden void @_TF7structs4test
// CHECK: [[X:%.*]] = alloca [[A:%.*]], align 8
// CHECK-NEXT: call void @llvm.dbg.declare(metadata !{[[A]]* [[X]]}, metadata [[X_DBG:!.*]], metadata !{{[0-9]+}})
// CHECK: null, null, metadata ![[A_DI:.*]]} ; [ DW_TAG_structure_type ] [A] [line [[@LINE-8]]
// CHECK: [[X_DBG]] = metadata !{i32 {{.*}}, metadata {{.*}}, metadata !"x", metadata {{.*}}, i32 {{.*}}, metadata ![[A_DI]]
// CHECK: metadata ![[A_DI:[^,]+]]} ; [ DW_TAG_structure_type ] [A] [line [[@LINE-8]]
// CHECK: [[X_DBG]] = {{.*}}metadata ![[A_DI]]} ; [ DW_TAG_arg_variable ] [x] [line [[@LINE-5]]]

View File

@@ -32,15 +32,15 @@ class MyObject : NSObject {
// LOC-CHECK: define {{.*}} @_TToFC4main8MyObjectg5MyArrCSo7NSArray
// LOC-CHECK: ret {{.*}}, !dbg ![[DBG:.*]]
// LOC-CHECK: ret
// LOC-CHECK: ![[THUNK:.*]] = {{.*}}metadata !"_TToFC4main8MyObjectg5MyArrCSo7NSArray", {{.*}} ; [ DW_TAG_subprogram ] [line [[@LINE+2]]] [local] [def]
// LOC-CHECK: ![[THUNK:.*]] = {{.*}}_TToFC4main8MyObjectg5MyArrCSo7NSArray{{.*}} ; [ DW_TAG_subprogram ] [line [[@LINE+2]]] [local] [def]
// LOC-CHECK: ![[DBG]] = metadata !{i32 0, i32 0, metadata ![[THUNK]], null}
var MyArr = NSArray()
// Capture the pointer size from type Int
// IMPORT-CHECK: %Si = type <{ i[[PTRSIZE:[0-9]+]] }>
// IMPORT-CHECK: metadata ![[FOUNDATION:[0-9]+]], metadata !"NSArray", i32 {{.*}}, null, null, metadata ![[NSARRAY:.*]]} ; [ DW_TAG_structure_type ] [NSArray]
// IMPORT-CHECK: metadata ![[FOUNDATION:[0-9]+]], {{[^,]+}}, {{[^,]+}}, null, null, metadata ![[NSARRAY:.*]]} ; [ DW_TAG_structure_type ] [NSArray]
// IMPORT-CHECK: [[FOUNDATION]] = {{.*}} ; [ DW_TAG_module ] [Foundation]
// IMPORT-CHECK: metadata ![[NSARRAY]]} ; [ DW_TAG_member ] [MyArr] [line 0, size [[PTRSIZE]], align [[PTRSIZE]], offset 0] [from _TtCSo7NSArray]
// IMPORT-CHECK: metadata ![[FOUNDATION_FILE:[0-9]+]], metadata ![[FOUNDATION_MODULE:[0-9]+]], i32 1} ; [ DW_TAG_imported_module ]
// IMPORT-CHECK: \001\00", metadata ![[FOUNDATION_FILE:[0-9]+]], metadata ![[FOUNDATION_MODULE:[0-9]+]]} ; [ DW_TAG_imported_module ]
// CHECK: ![[FOUNDATION_FILE]] = {{.*}}foundation.swift
// CHECK: ![[FOUNDATION_MODULE]] = {{.*}}[ DW_TAG_module ] [foundation]
@@ -61,7 +61,7 @@ extension MyObject {
}
// SANITY-DAG: metadata !"_TtCSo8NSObject"} ; [ DW_TAG_structure_type ] [NSObject]
// SANITY-DAG: i32 [[@LINE+1]], metadata !"_TtCSo8NSObject", {{.*}} [ DW_TAG_variable ] [NsObj] [line [[@LINE+1]]] [def]
// SANITY-DAG: metadata !"_TtCSo8NSObject", {{.*}} [ DW_TAG_variable ] [NsObj] [line [[@LINE+1]]] [def]
var NsObj: NSObject
NsObj = MyObject()
var MyObj: MyObject

View File

@@ -1,32 +1,10 @@
// RUN: %swift -target x86_64-apple-macosx10.9 %s -emit-ir -g -o - | FileCheck %s
//
func test_ints() {
var int8_minus_two : Int8 = -2
var int8_plus_two : Int8 = 2
var int16_minus_two : Int16 = -2
var int16_plus_two : Int16 = 2
var int32_minus_two : Int32 = -2
var int32_plus_two : Int32 = 2
var int64_minus_two : Int64 = -2
var int64_plus_two : Int64 = 2
var int_minus_two = -2
var int_plus_two = 2
var uint8_plus_two : UInt8 = 2
var uint16_plus_two : UInt16 = 2
var uint32_plus_two : UInt32 = 2
var uint64_plus_two : UInt64 = 2
}
// rdar://problem/15078795
// These two should not have the same type.
// CHECK: [ DW_TAG_base_type ] [_TtBi64_] [line 0, size 64, align 64
// CHECK: metadata !"a", {{.*}}, i32 [[@LINE+1]], metadata ![[INT64:.*]], i32 0
// CHECK: _TtVSs5Int64"} ; [ DW_TAG_structure_type ] [Int64] [line 0, size 64, align 64, offset 0] [def] [from ]
// CHECK: metadata !"_TtVSs5Int64"{{.*}}} ; [ DW_TAG_variable ] [a] [line [[@LINE+1]]] [def]
var a : Int64 = 2
// CHECK: metadata !"b",{{.*}}, i32 [[@LINE+3]],
// CHECK-NOT: metadata ![[INT64]]
// CHECK: i32 0, i32 1
// CHECK: metadata !"_TtSi"{{.*}}} ; [ DW_TAG_variable ] [b] [line [[@LINE+1]]] [def]
var b = 2

View File

@@ -6,10 +6,10 @@ class DWARF
}
func main () {
// CHECK-DAG: metadata ![[DIEOFFSET]], i32 0, i32 0} ; [ DW_TAG_auto_variable ] [a] [line [[@LINE+1]]]
// CHECK-DAG: metadata ![[DIEOFFSET]]} ; [ DW_TAG_auto_variable ] [a] [line [[@LINE+1]]]
var a : DWARF.DIEOffset = 123
println("a is \(a)")
// CHECK-DAG: metadata ![[DIEOFFSET]], i32 0, i32 0} ; [ DW_TAG_auto_variable ] [b] [line [[@LINE+1]]]
// CHECK-DAG: metadata ![[DIEOFFSET]]} ; [ DW_TAG_auto_variable ] [b] [line [[@LINE+1]]]
var b = DWARF.DIEOffset(456) as DWARF.DIEOffset
println("b is \(b)")
}

View File

@@ -9,7 +9,7 @@ class AClass : AProtocol {
// CHECK: define hidden void @{{.*}}aFunction
// CHECK: call void @llvm.dbg.declare(metadata !{%swift.type** %{{.*}}}, metadata ![[TYPEARG:.*]], metadata !{{[0-9]+}}),
// CHECK: ![[TYPEARG]] = metadata !{i32 {{.*}}, metadata !{{.*}}, metadata !"$swift.type.T", metadata !{{.*}}, i32 {{.*}}, metadata ![[SWIFTMETATYPE:.*]], i32 64, i32 0} ; [ DW_TAG_auto_variable ] [$swift.type.T]
// CHECK: ![[TYPEARG]] = metadata !{metadata !"{{.*}}$swift.type.T\000\0064", metadata !{{[^,]+}}, metadata !{{[^,]+}}, metadata ![[SWIFTMETATYPE:.*]]} ; [ DW_TAG_auto_variable ] [$swift.type.T]
// CHECK: ![[SWIFTMETATYPE]] = {{.*}} ; [ DW_TAG_typedef ] [$swift.type] [line 0, size 0, align 0, offset 0] [from _TtBp]
func aFunction<T : AProtocol>(x: T) {
println("I am in aFunction: \(x.f())")

View File

@@ -8,25 +8,25 @@
// Test variables-interpreter.swift runs this code with `swift -g -i`.
// Test variables-repl.swift runs this code with `swift -g < variables.swift`.
// CHECK-DAG: ![[TLC:[0-9]+]] ={{.*}} metadata !"top_level_code",{{.*}} ; [ DW_TAG_subprogram ] [line 1] [def] [scope 0]
// CHECK-DAG: ![[TLC:[0-9]+]] ={{.*}}top_level_code{{.*}}", metadata ![[FILE:[0-9]+]]{{.*}} ; [ DW_TAG_subprogram ] [line 1] [def] [scope 0]
// Global variables.
var glob_i8: Int8 = 8;
// CHECK-DAG: metadata ![[TLC]], metadata !"glob_i8", {{.*}}, i32 [[@LINE-1]], metadata ![[I8:.*]], i32 0{{.*}}DW_TAG_variable{{.*}}glob_i8
// CHECK-DAG: metadata ![[TLC]], {{[^,]+}}, metadata ![[I8:[^,]+]]{{.*}}} ; [ DW_TAG_variable ] [glob_i8] [line [[@LINE-1]]] [def]
var glob_i16: Int16 = 16;
// CHECK-DAG: metadata ![[TLC]], {{.*}}, i32 [[@LINE-1]], metadata ![[I16:.*]], i32 0{{.*}}DW_TAG_variable{{.*}}glob_i16
// CHECK-DAG: metadata ![[TLC]], {{[^,]+}}, metadata ![[I16:[^,]+]]{{.*}}} ; [ DW_TAG_variable ] [glob_i16] [line [[@LINE-1]]] [def]
var glob_i32: Int32 = 32;
// CHECK-DAG: metadata ![[TLC]], {{.*}}, i32 [[@LINE-1]], metadata ![[I32:.*]], i32 0{{.*}}DW_TAG_variable{{.*}}glob_i32
// CHECK-DAG: metadata ![[TLC]], {{[^,]+}}, metadata ![[I32:[^,]+]]{{.*}}} ; [ DW_TAG_variable ] [glob_i32] [line [[@LINE-1]]] [def]
var glob_i64: Int64 = 64;
// CHECK-DAG: metadata ![[TLC]], {{.*}}, i32 [[@LINE-1]], metadata ![[I64:.*]], i32 0{{.*}}DW_TAG_variable{{.*}}glob_i64
// CHECK-DAG: metadata ![[TLC]], {{[^,]+}}, metadata ![[I64:[^,]+]]{{.*}}} ; [ DW_TAG_variable ] [glob_i64] [line [[@LINE-1]]] [def]
var glob_f: Float = 2.89;
// CHECK-DAG: metadata ![[TLC]], {{.*}}, i32 [[@LINE-1]], metadata ![[F:.*]], i32 0{{.*}}DW_TAG_variable{{.*}}glob_f
// CHECK-DAG: metadata ![[TLC]], {{[^,]+}}, metadata ![[F:[^,]+]]{{.*}}} ; [ DW_TAG_variable ] [glob_f] [line [[@LINE-1]]] [def]
var glob_d: Double = 3.14;
// CHECK-DAG: metadata ![[TLC]], {{.*}}, i32 [[@LINE-1]], metadata ![[D:.*]], i32 0{{.*}}DW_TAG_variable{{.*}}glob_d
// CHECK-DAG: metadata ![[TLC]], {{[^,]+}}, metadata ![[D:[^,]+]]{{.*}}} ; [ DW_TAG_variable ] [glob_d] [line [[@LINE-1]]] [def]
var glob_b: Bool = true
// CHECK-DAG: metadata ![[TLC]], {{.*}}, i32 [[@LINE-1]], metadata ![[B:.*]], i32 0{{.*}}DW_TAG_variable{{.*}}glob_b
// CHECK-DAG: metadata ![[TLC]], {{[^,]+}}, metadata ![[B:[^,]+]]{{.*}}} ; [ DW_TAG_variable ] [glob_b] [line [[@LINE-1]]] [def]
var glob_s: String = "😄"
// CHECK-DAG: metadata ![[TLC]], {{.*}}, i32 [[@LINE-1]], metadata ![[S:.*]], i32 0{{.*}}DW_TAG_variable{{.*}}glob_s
// CHECK-DAG: metadata ![[TLC]], {{[^,]+}}, metadata ![[S:[^,]+]]{{.*}}} ; [ DW_TAG_variable ] [glob_s] [line [[@LINE-1]]] [def]
// FIXME: Dreadful type-checker performance prevents this from being this single
// print expression:
// print("\(glob_v), \(glob_i8), \(glob_i16), \(glob_i32), \(glob_i64), \(glob_f), \(glob_d), \(glob_b), \(glob_s)")
@@ -57,8 +57,8 @@ var g = foo(1.0);
// Tuple types.
var tuple: (Int, Bool) = (1, true)
// CHECK-DAG: "_Tv{{9variables|4main}}5tupleTSiSb_", metadata !{{[0-9]+}}, i32 [[@LINE-1]], metadata ![[TUPTY:.*]], i32 0{{.*}}[ DW_TAG_variable ] [tuple] [line [[@LINE-1]]] [def]
// CHECK-DAG: null, metadata ![[ELEMS:[0-9]+]], i32 {{[0-9]+}}, null, null, metadata ![[TUPTY]]}
// CHECK-DAG: _Tv{{9variables|4main}}5tupleTSiSb_{{[^,]+}},{{[^,]+}}, {{[^,]+}}, metadata ![[TUPTY:[^,]+]], {{.*}}} ; [ DW_TAG_variable ] [tuple] [line [[@LINE-1]]] [def]
// CHECK-DAG: metadata ![[ELEMS:[0-9]+]], null, null, metadata ![[TUPTY]]}
// CHECK-DAG: ![[ELEMS]] = metadata !{metadata ![[MI64:[0-9]+]], metadata ![[MB:[0-9]+]]}
// CHECK-DAG: ![[MI64]] = {{.*}}[ DW_TAG_member ]{{.*}}[from _TtSi]
// CHECK-DAG: ![[MB]] = {{.*}}![[B]]} {{.*}}DW_TAG_member
@@ -72,7 +72,7 @@ println(tuple)
// Arrays are represented as an instantiation of Array.
// CHECK-DAG: null, null, metadata ![[Array:.*]]} ; [ DW_TAG_structure_type ] [Array]
// CHECK-DAG: metadata ![[Array]], i32 0,{{.*}}[ DW_TAG_variable ] [array_of_tuples] [line [[@LINE+1]]] [def]
// CHECK-DAG: metadata ![[Array]], {{.*}} ; [ DW_TAG_variable ] [array_of_tuples] [line [[@LINE+1]]] [def]
var array_of_tuples : [(a : Int, b : Int)] = [(1,2)]
var twod : [[Int]] = [[1]]
@@ -80,9 +80,9 @@ func bar( x: [(a : Int, b : Int)], y: [[Int]] ) {
}
// CHECK-DAG: i32 [[@LINE+4]], metadata ![[PTY:[0-9]+]], i32 0, i32 1,{{.*}} [ DW_TAG_variable ] [P] [line [[@LINE+4]]] [def]
// CHECK-DAG: null, null, metadata ![[PTUP:.*]]} ; [ DW_TAG_structure_type ] [_TtT1xSd1ySd1zSd_]
// CHECK-DAG: ![[PTY]] = metadata{{.*}}metadata ![[PTUP]]} ; [ DW_TAG_typedef ] [_Tta{{9variables|4main}}5Point] [line [[@LINE+1]], size 0, align 0, offset 0] [from _TtT1xSd1ySd1zSd_]
// CHECK-DAG: \001", {{[^,]+}}, {{[^,]+}}, metadata ![[PTY:[0-9]+]], {{.*}}} ; [ DW_TAG_variable ] [P] [line [[@LINE+4]]] [def]
// CHECK-DAG: metadata ![[PTUP:[^,]+]]} ; [ DW_TAG_structure_type ] [_TtT1xSd1ySd1zSd_]
// CHECK-DAG: ![[PTY]] = {{.*}}metadata ![[PTUP]]} ; [ DW_TAG_typedef ] [_Tta{{9variables|4main}}5Point] [line [[@LINE+1]], size 0, align 0, offset 0] [from _TtT1xSd1ySd1zSd_]
typealias Point = (x: Double, y: Double, z: Double)
var P:Point = (1, 2, 3)
func println(p: (x: Double, y: Double, z: Double)) {
@@ -90,8 +90,8 @@ func println(p: (x: Double, y: Double, z: Double)) {
}
println(P)
// CHECK-DAG: i32 [[@LINE+3]], metadata ![[APTY:[0-9]+]], i32 0, i32 1,{{.*}} [ DW_TAG_variable ] [P2] [line [[@LINE+3]]] [def]
// CHECK-DAG: ![[APTY]] = metadata{{.*}}metadata ![[PTY:[0-9]+]]} ; [ DW_TAG_typedef ] [_Tta{{9variables|4main}}13AliasForPoint] [line [[@LINE+1]], size 0, align 0, offset 0] [from _Tta{{9variables|4main}}5Point]
// CHECK-DAG: \001", {{[^,]+}}, {{[^,]+}}, metadata ![[APTY:[0-9]+]], {{.*}}} ; [ DW_TAG_variable ] [P2] [line [[@LINE+3]]] [def]
// CHECK-DAG: ![[APTY]] = {{.*}}metadata ![[PTY:[0-9]+]]} ; [ DW_TAG_typedef ] [_Tta{{9variables|4main}}13AliasForPoint] [line [[@LINE+1]], size 0, align 0, offset 0] [from _Tta{{9variables|4main}}5Point]
typealias AliasForPoint = Point
var P2:AliasForPoint = (4, 5, 6)
println(P2)
@@ -102,7 +102,7 @@ enum TriValue {
case true_
case top
}
// CHECK-DAG: i32 [[@LINE+2]], metadata ![[UNIONTYPE:.*]], i32 0, {{.*}}[ DW_TAG_variable ] [unknown] [line [[@LINE+2]]] [def]
// CHECK-DAG: \001", {{[^,]+}}, {{[^,]+}}, metadata ![[UNIONTYPE:[^,]+]], {{.*}}} ; [ DW_TAG_variable ] [unknown] [line [[@LINE+2]]] [def]
// CHECK-DAG: ![[UNIONTYPE]] ={{.*}}[ DW_TAG_union_type ] [_TtO{{9variables|4main}}8TriValue]
var unknown = TriValue.top
func println(value: TriValue) {
@@ -114,5 +114,4 @@ func println(value: TriValue) {
}
println(unknown)
// CHECK-DAG: metadata !{i32 {{[0-9]+}}, metadata !{{[0-9]+}}, metadata ![[FILE:[0-9]+]], metadata !"", metadata !"", metadata !"top_level_code", {{.*}} [ DW_TAG_subprogram ] [line 1] [def]
// CHECK-DAG: [ DW_TAG_file_type ] [{{.*}}variables.swift]