mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
58 lines
2.3 KiB
Swift
58 lines
2.3 KiB
Swift
// RUN: %target-swift-frontend %s -emit-ir -g -o - | %FileCheck %s
|
|
|
|
import Swift
|
|
|
|
func main() -> Void
|
|
{
|
|
// I am line 6.
|
|
var random_string = "b"
|
|
var random_int = 5
|
|
var out_only = 2013
|
|
|
|
var backward_ptr =
|
|
// CHECK: define internal {{.*}} i1 @"$s4mainAAyyFSbSS_SStcfU_"(
|
|
// CHECK: %[[RANDOM_STR_ADDR:.*]] = alloca ptr, align {{(4|8)}}
|
|
|
|
// FIXME(TODO: JIRA): i386 String is temporarily larger, and that causes the
|
|
// value to be by-address. When that is fixed, remove the optional
|
|
// DW_OP_deref below.
|
|
//
|
|
// CHECK-NEXT: #dbg_declare(ptr %[[RANDOM_STR_ADDR]], !{{.*}}, !DIExpression({{(DW_OP_deref)?}})
|
|
|
|
// CHECK: store ptr %{{.*}}, ptr %[[RANDOM_STR_ADDR]], align {{(4|8)}}
|
|
// CHECK-DAG: !DILocalVariable(name: "lhs",{{.*}} line: [[@LINE+5]],
|
|
// CHECK-DAG: !DILocalVariable(name: "rhs",{{.*}} line: [[@LINE+4]],
|
|
// CHECK-DAG: !DILocalVariable(name: "random_string",{{.*}} line: 8,
|
|
// CHECK-DAG: !DILocalVariable(name: "random_int",{{.*}} line: 9,
|
|
// CHECK-DAG: !DILocalVariable(name: "out_only",{{.*}} line: 10,
|
|
{ (lhs : String, rhs : String) -> Bool in
|
|
if rhs == random_string
|
|
|| rhs.unicodeScalars.count == random_int
|
|
{
|
|
// Ensure the two local_vars are in different lexical scopes.
|
|
// CHECK-DAG: !DILocalVariable(name: "local_var", scope: ![[THENSCOPE:[0-9]+]],{{.*}} line: [[@LINE+2]],
|
|
// CHECK-DAG: ![[THENSCOPE]] = distinct !DILexicalBlock({{.*}} line: [[@LINE+1]]
|
|
var local_var : Int64 = 10
|
|
print("I have an int here \(local_var).\n", terminator: "")
|
|
return false
|
|
}
|
|
else
|
|
{
|
|
// CHECK-DAG: !DILocalVariable(name: "local_var", scope: ![[ELSESCOPE:[0-9]+]],{{.*}} line: [[@LINE+2]]
|
|
// CHECK-DAG: ![[ELSESCOPE]] = distinct !DILexicalBlock({{.*}} line: [[@LINE+1]],
|
|
var local_var : String = "g"
|
|
print("I have another string here \(local_var).\n", terminator: "")
|
|
// Assign to all the captured variables to inhibit capture promotion.
|
|
random_string = "c"
|
|
random_int = -1
|
|
out_only = 333
|
|
return rhs < lhs
|
|
}
|
|
}
|
|
|
|
var bool = backward_ptr("a" , "b")
|
|
}
|
|
|
|
main()
|
|
|