Files
swift-mirror/test/DebugInfo/fnptr.swift
2013-09-15 02:57:25 +00:00

36 lines
1.9 KiB
Swift

// RUN: %swift -triple x86_64-apple-darwin10 %s -emit-llvm -g -o - | FileCheck %s
// CHECK-DAG: ![[SI:.*]] = {{.*}}[ DW_TAG_structure_type ] [_TtSi]
// CHECK-DAG: ![[SF:.*]] = {{.*}}[ DW_TAG_structure_type ] [_TtSf]
// CHECK-DAG: ![[VOID:.*]] = {{.*}}[ DW_TAG_structure_type ] [_TtT_]
func bar() {
print ("bar()")
}
func baz(i: Float) -> Int { return 0; }
func barz(i: Float, j: Float) -> Int { return 0; }
func main() -> Int {
// CHECK-DAG: i32 {{.*}}, metadata ![[BARPTR:.*]], i32 0, i32 0} ; [ DW_TAG_auto_variable ] [bar_function_pointer]
// CHECK-DAG: ![[BARPTR]] ={{.*}}metadata ![[BART:.*]]} ; [ DW_TAG_pointer_type ]
// CHECK-DAG: ![[BART]] = {{.*}}null, metadata ![[BARARGS:.*]], i32 0, null, null, null} ; [ DW_TAG_subroutine_type ]
// CHECK-DAG: ![[BARARGS]] = metadata !{metadata ![[VOID]]}
var bar_function_pointer = bar
bar_function_pointer();// Set breakpoint here
// CHECK-DAG: i32 {{.*}}, metadata ![[BAZPTR:.*]], i32 0, i32 0} ; [ DW_TAG_auto_variable ] [baz_function_pointer]
// CHECK-DAG: ![[BAZPTR]] ={{.*}}metadata ![[BAZT:.*]]} ; [ DW_TAG_pointer_type ]
// CHECK-DAG: ![[BAZT]] = {{.*}}metadata ![[BAZARGS:.*]], i32 0, null, null, null} ; [ DW_TAG_subroutine_type ]
// CHECK-DAG: ![[BAZARGS]] = metadata !{metadata ![[SI]], metadata ![[SF]]}
var baz_function_pointer = baz
baz_function_pointer(2.89)
// CHECK-DAG: i32 {{.*}}, metadata ![[BARZPTR:.*]], i32 0, i32 0} ; [ DW_TAG_auto_variable ] [barz_function_pointer]
// CHECK-DAG: ![[BARZPTR]] ={{.*}}metadata ![[BARZT:.*]]} ; [ DW_TAG_pointer_type ]
// CHECK-DAG: ![[BARZT]] = {{.*}}metadata ![[BARZARGS:.*]], i32 0, null, null, null} ; [ DW_TAG_subroutine_type ]
// CHECK-DAG: ![[BARZARGS]] = metadata !{metadata ![[SI]], metadata ![[SF]], metadata ![[SF]]}
var barz_function_pointer = barz
return barz_function_pointer(2.89, -1.0)
}
main()