tests: remove uses of println() that are not relevant to the tests

Swift SVN r28016
This commit is contained in:
Dmitri Hrybenko
2015-05-01 03:35:50 +00:00
parent 71faa43a8d
commit 0fce5c7b4e
43 changed files with 239 additions and 171 deletions

View File

@@ -2,8 +2,8 @@
// RUN: mkdir -p %t
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -parse -verify -I %S/Inputs/custom-modules/ %s
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -o %t -emit-module -I %S/Inputs/custom-modules/ %s -module-name submodules
// RUN: echo 'import submodules; println("\(x), \(y)")' | %target-swift-frontend(mock-sdk: %clang-importer-sdk) -parse - -I %t -I %S/Inputs/custom-modules/
// RUN: echo 'import submodules; println("\(x), \(y)")' | not %target-swift-frontend -parse - -I %t -I %S/Inputs/custom-modules/ 2>&1 | FileCheck -check-prefix=MISSING %s
// RUN: echo 'import submodules; let s = "\(x), \(y)"' | %target-swift-frontend(mock-sdk: %clang-importer-sdk) -parse - -I %t -I %S/Inputs/custom-modules/
// RUN: echo 'import submodules; let s = "\(x), \(y)"' | not %target-swift-frontend -parse - -I %t -I %S/Inputs/custom-modules/ 2>&1 | FileCheck -check-prefix=MISSING %s
// XFAIL: linux

View File

@@ -2,8 +2,8 @@
// RUN: mkdir -p %t
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -parse -verify %s -DCHECK_SCOPING
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -emit-module -o %t %s -module-name submodules
// RUN: echo 'import submodules; println("\(x), \(y)")' | %target-swift-frontend(mock-sdk: %clang-importer-sdk) -parse - -I %t
// RUN: echo 'import submodules; println("\(x), \(y)")' | not %target-swift-frontend -parse - -I %t 2>&1 | FileCheck -check-prefix=MISSING %s
// RUN: echo 'import submodules; let s = "\(x), \(y)"' | %target-swift-frontend(mock-sdk: %clang-importer-sdk) -parse - -I %t
// RUN: echo 'import submodules; let s = "\(x), \(y)"' | not %target-swift-frontend -parse - -I %t 2>&1 | FileCheck -check-prefix=MISSING %s
import typealias ctypes.bits.DWORD
// MISSING: missing required modules:

View File

@@ -2,6 +2,8 @@
// REQUIRES: objc_interop
func markUsed<T>(t: T) {}
class A {
@objc func do_a() {}
@@ -42,7 +44,7 @@ extension Optional {
}
var c: String? = Optional<Int>(1)
.bind {(x: Int) in println("\(x)!"); return "two" }
.bind {(x: Int) in markUsed("\(x)!"); return "two" }
func test4() {
func foo() -> Int { return 0 }

View File

@@ -1,5 +1,7 @@
// RUN: %target-parse-verify-swift
func markUsed<T>(t: T) {}
func f0(_: Float) -> Float {}
func f0(_: Int) -> Int {}
@@ -88,7 +90,7 @@ f4(5)
func f1() {
var c : Class // expected-error{{use of undeclared type 'Class'}}
print(c.x) // make sure error does not cascade here
markUsed(c.x) // make sure error does not cascade here
}
// We don't provide return-type sensitivity unless there is context.
@@ -110,7 +112,7 @@ struct HasX1aProperty {
// rdar://problem/16554496
@availability(*, unavailable)
func availTest(x: Int) {}
func availTest(x: Any) { println("this one") }
func availTest(x: Any) { markUsed("this one") }
func doAvailTest(x: Int) {
availTest(x)
}

View File

@@ -26,7 +26,7 @@ func bar() -> Int { return 42 }
// Some toplevel code that should not be serialized.
var foo: Foo = Foo()
println(foo.bar())
Double(foo.bar())
#if OBJC
func objCUser(obj: ObjCClass) {}

View File

@@ -1,12 +1,14 @@
// RUN: %target-swift-frontend %s -emit-ir -g -o - | FileCheck %s
func markUsed<T>(t: T) {}
class Foo {
// CHECK: !DISubprogram(name: "deinit", linkageName: "_TFC11Destructors3FooD"
// CHECK-SAME: line: [[@LINE-2]]
// CHECK-SAME: isDefinition: true
var x : Int
init(x: Int) { self.x = x }
func bar() -> (() -> ()) { return { println(self.x) } }
func bar() -> (() -> ()) { return { markUsed(self.x) } }
}
var f = Foo(x: 1)

View File

@@ -1,7 +1,8 @@
// RUN: %target-swift-frontend %s -emit-ir -g -o - | FileCheck %s
class Foo {}
println("Hello World!")
let x = "Hello World!"
// Test that no static variable for the metatype of Foo is emitted.
// FIXME: This really should be emitted as artificial variable instead.
// CHECK-NOT: DW_TAG_variable{{.*}}_TMnC14GlobalMetatype3Foo

View File

@@ -16,7 +16,8 @@
import basic
import typealias Swift.Optional
println(basic.foo(1, 2))
func markUsed<T>(t: T) {}
markUsed(basic.foo(1, 2))
// DWARF: .debug_info
// DWARF: DW_TAG_module

View File

@@ -6,6 +6,8 @@
// RUN: %target-swift-frontend %S/../Inputs/empty.swift -primary-file %s -emit-ir -g | FileCheck %s
// CHECK: !DICompileUnit({{.*}}flags: {{[^,]*}}-private-discriminator [[DISCRIMINATOR:_[A-Z0-9]+]]
func markUsed<T>(t: T) {}
private class A {
init(val : Int) { member = val }
private let member : Int
@@ -19,5 +21,5 @@ private class A {
func f() {
let a = A(val: 42)
println(a.getVal())
markUsed(a.getVal())
}

View File

@@ -1,5 +1,7 @@
// RUN: %target-swift-frontend %s -emit-ir -g -o - | FileCheck %s
func markUsed<T>(t: T) {}
protocol AProtocol {
func print()
}
@@ -7,7 +9,7 @@ protocol AProtocol {
class AClass : AProtocol {
var x: UInt32
init() { x = 0xDEADBEEF }
func print() { println("x = \(x)")}
func print() { markUsed("x = \(x)")}
}
// CHECK: define hidden void @_TF17ProtocolContainer3foo
// CHECK-NEXT: entry:

View File

@@ -1,5 +1,7 @@
// RUN: %target-swift-frontend %s -emit-ir -g -o - | FileCheck %s
func markUsed<T>(t: T) {}
class A {
var a : A?
// CHECK: define {{.*}}1AcfMS0_FT_S0_
@@ -8,7 +10,7 @@ class A {
// CHECK: store {{.*}} %0, {{.*}}, align
// CHECK-NOT: !dbg
// CHECK: call {{.*}}llvm.dbg.declare
println("Hi")
markUsed("Hi")
}
}

View File

@@ -2,6 +2,9 @@
// Don't crash when emitting debug info for anonymous variables.
// CHECK: !DILocalVariable({{.*}} name: "_"
func markUsed<T>(t: T) {}
protocol F_ {
func successor() -> Self
}
@@ -14,6 +17,6 @@ struct _Distance {}
func ~> <I: F_>(self_:I, (_Distance, (I))) -> Int {
self_.successor()
println("F")
markUsed("F")
return 0
}

View File

@@ -1,14 +1,16 @@
// RUN: %target-swift-frontend %s -emit-ir -g -o - | FileCheck %s
func markUsed<T>(t: T) {}
func main() {
// CHECK: call void @llvm.dbg.declare(metadata %"protocol<>"* {{.*}}, metadata ![[S:.*]], metadata !{{[0-9]+}}), !dbg ![[DBG:.*]]
// CHECK: ![[S]] = !DILocalVariable(tag: DW_TAG_auto_variable, name: "s", {{.*}}line: [[@LINE+3]]
// CHECK: ![[SCOPE:.*]] = distinct !DILexicalBlock({{.*}}line: 3, column: 13)
// CHECK: ![[DBG]] = !DILocation(line: [[@LINE+1]], column: 6, scope: ![[SCOPE]])
var s : Any = "hello world"
var n : Any = 12
var t : Any = (1,2)
println("hello world")
// CHECK: ![[SCOPE:.*]] = distinct !DILexicalBlock({{.*}}line: 5, column: 13)
// CHECK: ![[DBG]] = !DILocation(line: [[@LINE+1]], column: 7, scope: ![[SCOPE]])
var s: Any = "hello world"
var n: Any = 12
var t: Any = (1,2)
markUsed("hello world")
}
main()

View File

@@ -1,14 +1,15 @@
// RUN: %target-swift-frontend %s -emit-ir -verify -g -o - | FileCheck %s
func markUsed<T>(t: T) {}
class C<A> {
// CHECK-DAG: ![[A:[0-9]+]] = !DICompositeType(tag: DW_TAG_structure_type, name: "_TtQq_C11archetypes21C"
// CHECK-DAG: ![[B:[0-9]+]] = !DICompositeType(tag: DW_TAG_structure_type, name: "_TtQq_FC11archetypes21C3foo
// CHECK-DAG: !DILocalVariable(tag: DW_TAG_arg_variable, name: "x", {{.*}}line: [[@LINE+2]],{{.*}}type: ![[A]]
// CHECK-DAG: !DILocalVariable(tag: DW_TAG_arg_variable, name: "y", {{.*}}line: [[@LINE+1]],{{.*}}type: ![[B]]
func foo <B> (var x : A, var y : B)
{
println("hello world")
}
func foo <B> (var x : A, var y : B) {
markUsed("hello world")
}
}
C<Int>().foo(1, y: 3.14);

View File

@@ -1,5 +1,7 @@
// RUN: %target-swift-frontend -primary-file %s -emit-ir -g -o - | FileCheck %s
func markUsed<T>(t: T) {}
// CHECK-DAG: !DILocalVariable(tag: DW_TAG_arg_variable, name: "arg", arg: 1,{{.*}} line: [[@LINE+1]]
func a(arg : Int)
{
@@ -48,7 +50,7 @@ class A {
// CHECK: !DILocalVariable(tag: DW_TAG_arg_variable, name: "self", arg: 1,{{.*}} line: [[@LINE+1]]
deinit {
println(member)
markUsed(member)
}
}

View File

@@ -1,16 +1,18 @@
// RUN: %target-swift-frontend %s -emit-ir -g -o - | FileCheck %s
func markUsed<T>(t: T) {}
class Class {
// CHECK: _TtQq_FC5atype5Class8function
func function <T> (x : T) {
println("hello world")
}
func function<T>(x: T) {
markUsed("hello world")
}
}
func main() {
var v = 1
var c = Class()
c.function(1)
var v = 1
var c = Class()
c.function(1)
}
main()

View File

@@ -4,6 +4,8 @@
// CHECK: call void @llvm.dbg.declare{{.*}}, !dbg
// CHECK: , !dbg ![[DBG:.*]]
func markUsed<T>(t: T) {}
func get_truth(input: Int) -> Int {
return input % 2
}
@@ -25,10 +27,9 @@ func call_me(var input: Int) -> Void {
// CHECK-DAG: !DISubprogram({{.*}}linkageName: "_TFF11autoclosure7call_meFSiT_u_KT_PSs11BooleanType_",{{.*}} line: [[@LINE+3]],{{.*}} isLocal: false, isDefinition: true
// But not in the line table.
// CHECK-DAG: ![[DBG]] = !DILocation(line: [[@LINE+1]],
if input != 0 &&&&& ( get_truth (input * 2 + 1) > 0 )
{
println ("Whew, passed that test.")
}
if input != 0 &&&&& ( get_truth (input * 2 + 1) > 0 ) {
markUsed("Whew, passed that test.")
}
}

View File

@@ -1,12 +1,13 @@
// RUN: %target-swift-frontend %s -emit-ir -g -o - | FileCheck %s
func markUsed<T>(t: T) {}
// Int1 uses 1 bit, but is aligned at 8 bits.
// CHECK: !DIBasicType(name: "_TtBi1_", size: 1, align: 8, encoding: DW_ATE_unsigned)
func main()
{
var t = true
var f = false
println("hello")
func main() {
var t = true
var f = false
markUsed("hello")
}
main()

View File

@@ -3,8 +3,11 @@
// REQUIRES: objc_interop
import Dispatch
func markUsed<T>(t: T) {}
// CHECK-DAG: !DICompositeType(tag: DW_TAG_union_type, {{.*}}identifier: "_TtGSQaSC21dispatch_queue_attr_t_"
// CHECK-DAG: !DIGlobalVariable(name: "queue",{{.*}} line: [[@LINE+1]], type: !"_TtGSQaSC21dispatch_queue_attr_t_"
var queue = dispatch_queue_create("queue", nil)
dispatch_sync(queue) { println("Hello world"); }
dispatch_sync(queue) { markUsed("Hello world"); }

View File

@@ -1,5 +1,7 @@
// RUN: %target-swift-frontend %s -emit-ir -g -o - | FileCheck %s
func markUsed<T>(t: T) {}
func makeIncrementor(inc : Int) -> () -> Int
{
var sum = 0
@@ -17,4 +19,4 @@ func makeIncrementor(inc : Int) -> () -> Int
var incrementor = makeIncrementor (5)
var a = 5
var more_than_a = incrementor ()
println ("a was \(a) and more_than_a was \(more_than_a)")
markUsed("a was \(a) and more_than_a was \(more_than_a)")

View File

@@ -1,5 +1,7 @@
// RUN: %target-swift-frontend %s -g -emit-ir -o - | FileCheck %s
func markUsed<T>(t: T) {}
func foo(a : Int, _ b : Int) -> Int {
return a+b
}
@@ -10,5 +12,5 @@ func foo(a : Int, _ b : Int) -> Int {
let r = foo(foo(1, 23), // CHECK: ![[ARG1]] = !DILocation(line: [[@LINE]],
foo(2, 42) // CHECK: ![[ARG2]] = !DILocation(line: [[@LINE]],
) // CHECK: ![[OUTER]] = !DILocation(line: [[@LINE]],
println(r)
markUsed(r)

View File

@@ -1,4 +1,7 @@
// RUN: %target-swift-frontend -Xllvm -debug-values-propagate-liveness -O %s -disable-llvm-optzns -emit-ir -g -o - | FileCheck %s
func markUsed<T>(t: T) {}
// CHECK: define {{.*}}4main4demo
// CHECK: define {{.*}}hidden i1 {{.*}}4main4sort
// CHECK: call void @llvm.dbg.value(metadata i8*{{.*}}, metadata ![[A:.*]], metadata ![[P1:.*]])
@@ -7,13 +10,13 @@
// CHECK: call void @llvm.dbg.value(metadata i8*{{.*}}, metadata ![[B:.*]], metadata ![[P1]])
// CHECK: call void @llvm.dbg.value(metadata i{{[0-9]+}} {{.*}}, metadata ![[B]], metadata ![[P2]])
// CHECK: call void @llvm.dbg.value(metadata i{{[0-9]+}} {{.*}}, metadata ![[B]], metadata ![[P3]])
// CHECK-DAG: ![[A]] = !DILocalVariable({{.*}} name: "a",{{.*}} line: 15
// CHECK-DAG: ![[B]] = !DILocalVariable({{.*}} name: "b",{{.*}} line: 15
// CHECK-DAG: ![[A]] = !DILocalVariable({{.*}} name: "a",{{.*}} line: 18
// CHECK-DAG: ![[B]] = !DILocalVariable({{.*}} name: "b",{{.*}} line: 18
// CHECK-DAG: ![[P1]] = !DIExpression(DW_OP_bit_piece, 0, {{(32|64)}})
// CHECK-DAG: ![[P2]] = !DIExpression(DW_OP_bit_piece, {{(32, 32|64, 64)}})
// CHECK-DAG: ![[P3]] = !DIExpression(DW_OP_bit_piece, {{(64, 32|128, 64)}})
func sort(a : String, b : String) -> Bool {
println("Sorting..\(a) & \(b)")
markUsed("Sorting..\(a) & \(b)")
return (a < b)
}
@@ -24,7 +27,7 @@ func demo() {
for name in sortedNames {
sortedNamesAsString += ("\(name), ")
}
println(sortedNamesAsString)
markUsed(sortedNamesAsString)
}
demo()
@@ -36,7 +39,7 @@ demo()
// CHECK-O0-NOT: line:
// CHECK-O0-SAME: ){{$}}
// CHECK-O0-NOT: DW_OP_bit_piece
// CHECK-O0: !DILocalVariable(tag: DW_TAG_arg_variable, name: "a",{{.*}} line: 15,
// CHECK-O0: !DILocalVariable(tag: DW_TAG_arg_variable, name: "a",{{.*}} line: 18,
// CHECK-O0-NOT: DW_OP_bit_piece
// CHECK-O0: !DILocalVariable(tag: DW_TAG_arg_variable, name: "b",{{.*}} line: 15,
// CHECK-O0: !DILocalVariable(tag: DW_TAG_arg_variable, name: "b",{{.*}} line: 18,
// CHECK-O0-NOT: DW_OP_bit_piece

View File

@@ -1,5 +1,7 @@
// RUN: %target-swift-frontend %s -emit-ir -g -o - | FileCheck %s
func markUsed<T>(t: T) {}
func foldl1<T>(list: [T], _ function: (a: T, b: T) -> T) -> T {
assert(list.count > 1)
var accumulator = list[0]
@@ -12,8 +14,8 @@ 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: !DISubprogram({{.*}}linkageName: "_TF7closureU_FTSiSi_Si",{{.*}} line: 18,{{.*}} scopeLine: 18,
// CHECK: !DISubprogram({{.*}}linkageName: "_TF7closureU_FTSiSi_Si",{{.*}} line: 20,{{.*}} scopeLine: 20,
// CHECK: !DILocalVariable(tag: DW_TAG_arg_variable, name: "$0",{{.*}} line: [[@LINE+2]],
// CHECK: !DILocalVariable(tag: DW_TAG_arg_variable, name: "$1",{{.*}} line: [[@LINE+1]],
var sum:Int = foldl1(a, { $0 + $1 })
println(sum)
markUsed(sum)

View File

@@ -1,23 +1,25 @@
// RUN: %target-swift-frontend -enable-dynamic-value-type-layout %s -emit-ir -g -o - | FileCheck %s
class Class <T> {
var x : T
func markUsed<T>(t: T) {}
init(_x : T) {x = _x}
class Class <T> {
var x: T
init(_x : T) {x = _x}
// Verify that the mangling of the decl context of the type U is correct.
// CHECK: !DICompositeType({{.*}}name: "{{[^"]*}}_TtQq_FC14dynamic_layout5Class3foo{{[^"]*}}"
func foo <U> (y : U) -> (T,U) {
var tuple = (x,y)
return tuple
}
func foo <U> (y : U) -> (T,U) {
var tuple = (x,y)
return tuple
}
}
func main() {
var v = Class<Int>(_x: 1)
var tuple = v.foo("hi")
println(tuple.0)
println(tuple.1)
var v = Class<Int>(_x: 1)
var tuple = v.foo("hi")
markUsed(tuple.0)
markUsed(tuple.1)
}
main()

View File

@@ -1,5 +1,7 @@
// RUN: %target-swift-frontend %s -emit-ir -g -o - | FileCheck %s
func markUsed<T>(t: T) {}
// CHECK: @_TFC12generic_arg25Class3foo{{.*}}, %swift.type* %U
// CHECK: %[[Y:.*]] = call %swift.opaque* %allocateBuffer3([{{(24|12)}} x i8]* %{{.*}}, %swift.type* %U)
// store %swift.opaque* %[[Y]], %swift.opaque** %[[Y_SHADOW:.*]], align
@@ -8,24 +10,23 @@
// CHECK-NOT: dbg.value{{.*}}metadata ![[U]]
class Class <T> {
// CHECK: ![[U]] = !DILocalVariable(tag: DW_TAG_arg_variable, name: "y",{{.*}} line: [[@LINE+1]],
func foo <U> (var x : T, var y : U)
{
println("hello world")
}
func foo<U>(var x: T, var y: U) {
markUsed("hello world")
}
func bar (var x : String, var y : Int) {
println("hello world")
}
func bar(var x: String, var y: Int) {
markUsed("hello world")
}
init() {}
init() {}
}
func main() {
var object : Class<String> = Class()
var x = "hello"
var y = 1234
object.bar(x, y: y)
object.foo(x, y: y)
var object: Class<String> = Class()
var x = "hello"
var y = 1234
object.bar(x, y: y)
object.foo(x, y: y)
}
main()

View File

@@ -1,5 +1,7 @@
// RUN: %target-swift-frontend -primary-file %s -emit-ir -verify -g -o - | FileCheck %s
func markUsed<T>(t: T) {}
protocol AProtocol {
func f() -> String;
}
@@ -20,7 +22,7 @@ class AnotherClass : AProtocol {
// CHECK-DAG: !DILocalVariable(tag: DW_TAG_arg_variable, name: "y", arg: 2,{{.*}} type: ![[Q:.*]])
// CHECK-DAG: ![[Q]] = !DICompositeType(tag: DW_TAG_structure_type, name: "_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())")
markUsed("I am in \(z): \(x.f()) \(y.f())")
}
aFunction(AClass(),AnotherClass(),"aFunction")

View File

@@ -83,8 +83,6 @@ func test() {
echo(string)
echo(tuple)
echo(point)
println("Hello, World!")
}
test()

View File

@@ -13,6 +13,8 @@
import FooBar
func markUsed<T>(t: T) {}
func square(x: Int64) -> Int64 {
// CHECK-DAG: ![[MULSCOPE]] = !DILocation(line: [[@LINE+2]], column: {{.*}}, scope: ![[MUL:.*]], inlinedAt: ![[INLINED:.*]])
// CHECK-DAG: ![[MUL:.*]] = distinct !DILexicalBlock(
@@ -25,7 +27,7 @@ let c = Int64(x)
// CHECK-DAG ![[INLINED]] = !DILocation(i32 [[@LINE+1]], column: {{.*}}, scope: !{{.*}}, inlinedAt: ![[INLINED_TOPLEVEL:.*]])
// CHECK-DAG: !DIGlobalVariable(name: "y",{{.*}} file: ![[TOPLEVEL]],{{.*}} line: [[@LINE+1]]
let y = square(c)
println(y)
markUsed(y)
// Check if the inlined and removed square function still has the correct linkage name in the debug info.
// CHECK-DAG: !DISubprogram(name: "square", linkageName: "_TF4main6squareFVSs5Int64S0_"

View File

@@ -2,43 +2,46 @@
// LValues are direct values, too. They are reference types, though.
func markUsed<T>(t: T) {}
class Class {
var ivar : Int
init() { ivar = 1234 }
var ivar : Int
init() { ivar = 1234 }
}
class Other : Class {
var ovar : Int
override init () { ovar = 112233
super.init()
ivar = 4321
}
var ovar : Int
override init() {
ovar = 112233
super.init()
ivar = 4321
}
}
struct Struct {
var ivar : Int
init() { ivar = 4567 }
var ivar : Int
init() { ivar = 4567 }
}
func foo (inout x : Class) {
func foo(inout x: Class) {
// CHECK: !DILocalVariable(tag: DW_TAG_arg_variable, name: "x",{{.*}} line: [[@LINE-1]]
println(x.ivar)
x.ivar++ // Set breakpoint here
markUsed(x.ivar)
x.ivar++ // Set breakpoint here
}
func foo(inout x : Struct) {
func foo(inout x: Struct) {
// CHECK: !DILocalVariable(tag: DW_TAG_arg_variable, name: "x",{{.*}} line: [[@LINE-1]]
println(x.ivar)
x.ivar++ // Set breakpoint here
markUsed(x.ivar)
x.ivar++ // Set breakpoint here
}
func main() {
var c : Class = Other()
var s = Struct()
foo(&c)
foo(&s)
foo(&c)
foo(&s)
var c: Class = Other()
var s = Struct()
foo(&c)
foo(&s)
foo(&c)
foo(&s)
}
main()

View File

@@ -1,20 +1,22 @@
// RUN: %target-swift-frontend %s -emit-ir -g -o %t.ll
// RUN: FileCheck %s < %t.ll
func markUsed<T>(t: T) {}
var puzzleInput = "great minds think alike"
var puzzleOutput = ""
// CHECK-NOT: !DILocalVariable(tag: DW_TAG_auto_variable, name: "$letter$generator"
// CHECK: !DILocalVariable(tag: DW_TAG_auto_variable, name: "letter",
// CHECK-SAME: line: [[@LINE+1]]
for letter in puzzleInput {
switch letter {
case "a", "e", "i", "o", "u", " ":
continue
default:
puzzleOutput.append(letter)
}
switch letter {
case "a", "e", "i", "o", "u", " ":
continue
default:
puzzleOutput.append(letter)
}
}
println(puzzleOutput)
markUsed(puzzleOutput)
func count() {
@@ -22,7 +24,7 @@ func count() {
// CHECK: !DILocalVariable(tag: DW_TAG_auto_variable, name: "i",
// CHECK-SAME: line: [[@LINE+1]]
for i in 0...100 {
println(i)
markUsed(i)
}
}
count()

View File

@@ -1,14 +1,15 @@
func markUsed<T>(t: T) {}
func f() {
if 1==1 {
#line 42 "abc.swift"
println("Hello World")
markUsed("Hello World")
#line
}
println("Test")
markUsed("Test")
#line 142 "abc.swift"
println("abc again")
markUsed("abc again")
#line 142 "def.swift"
println("jump directly to def")
markUsed("jump directly to def")
}
// RUN: %target-swift-frontend -primary-file %s -S -g -o - | FileCheck %s
@@ -16,7 +17,7 @@ func f() {
// CHECK: .loc [[MAIN]] 1
// CHECK: .file [[ABC:.*]] "abc.swift"
// CHECK: .loc [[ABC]] 42
// CHECK: .loc [[MAIN]] 7
// CHECK: .loc [[MAIN]] 8
// CHECK: .loc [[ABC]] 142
// CHECK: .file [[DEF:.*]] "def.swift"
// CHECK: .loc [[DEF]] 142

View File

@@ -1,5 +1,7 @@
// RUN: %target-swift-frontend %s -emit-ir -g -o - | FileCheck %s
func markUsed<T>(t: T) {}
class Person {
var name = "No Name"
var age = 0
@@ -9,15 +11,15 @@ func main() {
var person = Person()
var b = [0,1,13]
for element in b {
println("element = \(element)")
markUsed("element = \(element)")
}
println("Done with the for loop")
// CHECK: call void @_TFSs7println
markUsed("Done with the for loop")
// CHECK: call void @_TF4main8markUsedU__FQ_T_
// CHECK: br label
// CHECK: <label>:
// CHECK: , !dbg ![[LOOPHEADER_LOC:.*]]
// CHECK: call void {{.*}}elease({{.*}}) {{#[0-9]+}}, !dbg ![[LOOPHEADER_LOC]]
// CHECK: call void @_TFSs7println
// CHECK: call void @_TF4main8markUsedU__FQ_T_
// The cleanups should share the line number with the ret stmt.
// CHECK: call void {{.*}}elease({{.*}}) {{#[0-9]+}}, !dbg ![[CLEANUPS:.*]]
// CHECK-NEXT: !dbg ![[CLEANUPS]]

View File

@@ -6,6 +6,8 @@
// CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "_TtT4NameSS2IdSi_",{{.*}} identifier: [[TT1:[^,)]+]])
// CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "_TtTSS2IdSi_",{{.*}} identifier: [[TT2:[^,)]+]])
func markUsed<T>(t: T) {}
// Variable:
// mangling.myDict : Swift.Dictionary<Swift.Int64, Swift.String>
// CHECK: !DIGlobalVariable(name: "myDict", linkageName: "_Tv8mangling6myDictGVSs10DictionarySiSS_",
@@ -29,8 +31,8 @@ var myTuple2 : ( String, Id: Int) = ("B", 2)
// FIXME: Pending <rdar://problem/16860038>
// 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))
// markUsed({ $$0.1 }(myTuple3))
println(myTuple1.Id)
println(myTuple2.Id)
markUsed(myTuple1.Id)
markUsed(myTuple2.Id)

View File

@@ -1,5 +1,7 @@
// RUN: %target-swift-frontend %s -emit-ir -g -o - | FileCheck %s
func markUsed<T>(t: T) {}
class AClass {
func f () -> Int { return 1 }
}
@@ -14,13 +16,13 @@ struct AStruct {
// CHECK: define hidden void @_TF9nostorage3appFT_T_()
func app() {
var ac : AClass = AnotherClass()
// No members? No storage! Emitted as a constant 0, because.
// CHECK: call void @llvm.dbg.value(metadata {{.*}}, i64 0, metadata ![[AT:.*]], metadata !{{[0-9]+}}), !dbg
// CHECK: ![[AT]] = !DILocalVariable(tag: DW_TAG_auto_variable, name: "at",
// CHECK-SAME: line: [[@LINE+1]]
var at = AStruct()
println("\(ac.f()) \(at.f())")
var ac: AClass = AnotherClass()
// No members? No storage! Emitted as a constant 0, because.
// CHECK: call void @llvm.dbg.value(metadata {{.*}}, i64 0, metadata ![[AT:.*]], metadata !{{[0-9]+}}), !dbg
// CHECK: ![[AT]] = !DILocalVariable(tag: DW_TAG_auto_variable, name: "at",
// CHECK-SAME: line: [[@LINE+1]]
var at = AStruct()
markUsed("\(ac.f()) \(at.f())")
}
app()

View File

@@ -3,6 +3,8 @@
// RUN: FileCheck --check-prefix=CHECK-SCOPES %s < %t.ll
// RUN: %target-swift-frontend -emit-sil -emit-verbose-sil -primary-file %s -o - | FileCheck %s --check-prefix=SIL-CHECK
func markUsed<T>(t: T) {}
func classifyPoint2(p: (Double, Double)) {
func return_same (var input : Double) -> Double
{
@@ -12,12 +14,12 @@ func classifyPoint2(p: (Double, Double)) {
switch p {
case (0, 0):
println("origin")
markUsed("origin")
case (0, _):
println("on the Y axis")
println("(0, \(p.1)) is on the y-axis")
markUsed("on the Y axis")
markUsed("(0, \(p.1)) is on the y-axis")
case (_, 0):
println("on the X axis")
markUsed("on the X axis")
case (var x, var y) where
// CHECK: call double {{.*}}return_same{{.*}}, !dbg ![[LOC1:.*]]
// CHECK: br {{.*}}, label {{.*}}, label {{.*}}, !dbg ![[LOC2:.*]]
@@ -26,23 +28,23 @@ func classifyPoint2(p: (Double, Double)) {
// CHECK: ![[LOC2]] = !DILocation(line: [[@LINE+1]],
return_same(x) == return_same(y):
// CHECK: ![[LOC3]] = !DILocation(line: [[@LINE+1]],
println("(\(x), \(y)) is on the + diagonal")
// SIL-CHECK: dealloc_stack{{.*}}line:[[@LINE-1]]:54:cleanup
markUsed("(\(x), \(y)) is on the + diagonal")
// SIL-CHECK: dealloc_stack{{.*}}line:[[@LINE-1]]:55:cleanup
// Verify that the branch has a location >= the cleanup.
// SIL-CHECK-NEXT: br{{.*}}line:[[@LINE-3]]:54:cleanup
// SIL-CHECK-NEXT: br{{.*}}line:[[@LINE-3]]:55:cleanup
case (var x, var y) where x == -y:
// Verify that all variables end up in the appropriate scopes.
// CHECK-SCOPES: !DILocalVariable(tag: DW_TAG_auto_variable, name: "x", scope: ![[SCOPE1:[0-9]+]],{{.*}} line: [[@LINE-2]]
// CHECK-SCOPES: ![[SCOPE1]] = distinct !DILexicalBlock(
println("on the - diagonal")
markUsed("on the - diagonal")
case (var x, var y) where x >= -10 && x < 10 && y >= -10 && y < 10:
// CHECK-SCOPES: !DILocalVariable(tag: DW_TAG_auto_variable, name: "x", scope: ![[SCOPE2:[0-9]+]],{{.*}} line: [[@LINE-1]]
// CHECK-SCOPES: ![[SCOPE2]] = distinct !DILexicalBlock(
println("near the origin")
markUsed("near the origin")
case (var x, var y):
// CHECK-SCOPES: !DILocalVariable(tag: DW_TAG_auto_variable, name: "x", scope: ![[SCOPE3:[0-9]+]],{{.*}} line: [[@LINE-1]]
// CHECK-SCOPES: ![[SCOPE3]] = distinct !DILexicalBlock(
println("sqrt(\(x*x + y*y)) units from the origin")
markUsed("sqrt(\(x*x + y*y)) units from the origin")
}
// CHECK: !DILocation(line: [[@LINE+1]],
}

View File

@@ -1,11 +1,13 @@
// RUN: %target-swift-frontend -primary-file %s -emit-ir -g -o - | FileCheck %s
func markUsed<T>(t: T) {}
protocol A {
func x()
func x()
}
protocol B {
func y()
func y()
}
// CHECK-DAG: _TtP5pcomp1AS_1B_
@@ -15,20 +17,20 @@ func f(arg :protocol<A,B>) {
protocol SomeProto {
func f() -> Int
func f() -> Int
}
class SomeClass : SomeProto {
func f() -> Int { return 1 }
func f() -> Int { return 1 }
}
class SomeOtherClass : SomeClass {
override func f() -> Int { return 1 }
override func f() -> Int { return 1 }
}
// This is an indirect value.
// CHECK-DAG: !DICompositeType(tag: DW_TAG_structure_type, name: "SomeProto",{{.*}} identifier: "_TtP5pcomp9SomeProto_"
func main() {
var p : SomeProto = SomeOtherClass()
println("\(p.f())")
var p : SomeProto = SomeOtherClass()
markUsed("\(p.f())")
}

View File

@@ -2,8 +2,10 @@
// REQUIRES: CPU=x86_64
func markUsed<T>(t: T) {}
// CHECK: .file [[F:[0-9]+]] "prologue.swift"
func bar<T, U>(x: T, y: U) { println("bar") }
func bar<T, U>(x: T, y: U) { markUsed("bar") }
// CHECK: .loc [[F]] [[@LINE-1]] 3{{.}} prologue_end
// Make sure there is no allocation happening between the end of
// prologue and the beginning of the function body.

View File

@@ -1,38 +1,40 @@
// RUN: %target-swift-frontend %s -emit-ir -g -o - | FileCheck %s
func markUsed<T>(t: T) {}
// FIXME: Should be DW_TAG_interface_type
// CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "IGiveOutInts"
// CHECK-SAME: identifier: [[PT:"[^"]+"]]
protocol IGiveOutInts {
func callMe() -> Int
func callMe() -> Int
}
class SomeImplementor : IGiveOutInts {
init() {}
func callMe() -> Int { return 1 }
func callMe() -> Int { return 1 }
}
class AFancierImplementor : IGiveOutInts {
var myInt : Int
init() {
myInt = 1
}
var myInt : Int
init() {
myInt = 1
}
func callMe() -> Int {
myInt = myInt + 1
return myInt
}
func callMe() -> Int {
myInt = myInt + 1
return myInt
}
}
func printSomeNumbers(var gen: IGiveOutInts) {
// CHECK: !DILocalVariable(tag: DW_TAG_arg_variable, name: "gen",
// CHECK-SAME: line: [[@LINE-2]]
// CHECK-SAME: type: ![[PT]]
var i = 1
while i < 3 {
println("\(gen.callMe())")
i++
}
var i = 1
while i < 3 {
markUsed("\(gen.callMe())")
i++
}
}
var i1 : IGiveOutInts = SomeImplementor()

View File

@@ -1,5 +1,7 @@
// RUN: %target-swift-frontend %s -emit-ir -g -o - | FileCheck %s
func markUsed<T>(t: T) {}
func foo(inout x : Int) {
// Make sure the shadow copy is being made in the prologue, but the
// code to load the value from the inout storage is not.
@@ -14,7 +16,7 @@ func foo(inout x : Int) {
func main() {
var x = 1
foo(&x)
println("break here to see \(x)")
markUsed("break here to see \(x)")
}
main()

View File

@@ -65,7 +65,7 @@ class MyObject : NSObject {
// SANITY-DAG: !DISubprogram(name: "blah",{{.*}} line: [[@LINE+2]],{{.*}} isDefinition: true
extension MyObject {
func blah() {
println("blah blah blah")
MyObject()
}
}

View File

@@ -2,9 +2,10 @@
// XFAIL: linux
func markUsed<T>(t: T) {}
var a = 1
var b = 2
println(a+b)
markUsed(a+b)
// CHECK: _main:
// Verify that the top-level function (main) begins at line 5 (and not at line 0).
// CHECK: .loc {{[0-9]}} 5 {{[0-9]}} prologue_end
// Verify that the top-level function (main) begins at line 6 (and not at line 0).
// CHECK: .loc {{[0-9]}} 6 {{[0-9]}} prologue_end

View File

@@ -1,7 +1,8 @@
// RUN: %target-swift-frontend %s -emit-ir -g -o - | FileCheck %s
func markUsed<T>(t: T) {}
var a = 1
println(a)
markUsed(a)
// Verify that global variables are emitted once in main, once as
// global variable.
// CHECK: ![[MAIN:.*]] = !DISubprogram(name: "main",{{.*}} line: 1

View File

@@ -1,7 +1,8 @@
// RUN: %target-swift-frontend %s -emit-ir -g -o - | FileCheck %s
class DWARF
{
func markUsed<T>(t: T) {}
class DWARF {
// CHECK-DAG: ![[DIEOFFSET:.*]] = !DIDerivedType(tag: DW_TAG_typedef, name: "_TtaC9typealias5DWARF9DIEOffset",{{.*}} line: [[@LINE+1]], baseType: !"_TtVSs6UInt32")
typealias DIEOffset = UInt32
}
@@ -9,10 +10,10 @@ class DWARF
func main () {
// CHECK-DAG: !DILocalVariable(tag: DW_TAG_auto_variable, name: "a",{{.*}} type: ![[DIEOFFSET]]
var a : DWARF.DIEOffset = 123
println("a is \(a)")
markUsed("a is \(a)")
// CHECK-DAG: !DILocalVariable(tag: DW_TAG_auto_variable, name: "b",{{.*}} type: ![[DIEOFFSET]]
var b = DWARF.DIEOffset(456) as DWARF.DIEOffset
println("b is \(b)")
markUsed("b is \(b)")
}
main();