mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
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:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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))
|
||||
}
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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 )
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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 })
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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))
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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())")
|
||||
|
||||
@@ -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]]]
|
||||
|
||||
|
||||
@@ -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())")
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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 {{.*}}"
|
||||
|
||||
@@ -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]
|
||||
|
||||
|
||||
@@ -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]]]
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)")
|
||||
}
|
||||
|
||||
@@ -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())")
|
||||
|
||||
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user