blob: 018c4c6e2e126e3077e4bd72898d3bb52a020047 [file] [log] [blame]
Stephen Hines176edba2014-12-01 14:53:08 -08001// RUN: %clang_cc1 -emit-llvm -fblocks -g -triple x86_64-apple-darwin14 -x objective-c < %s -o - | FileCheck %s
2#define nil ((void*) 0)
3typedef signed char BOOL;
Pirama Arumuga Nainar3ea9e332015-04-08 08:57:32 -07004// CHECK: ![[BOOL:[0-9]+]] = !MDDerivedType(tag: DW_TAG_typedef, name: "BOOL"
5// CHECK-SAME: line: [[@LINE-2]]
6// CHECK: ![[ID:[0-9]+]] = !MDDerivedType(tag: DW_TAG_typedef, name: "id"
Stephen Hines176edba2014-12-01 14:53:08 -08007
8typedef BOOL (^SomeKindOfPredicate)(id obj);
Pirama Arumuga Nainar3ea9e332015-04-08 08:57:32 -07009// CHECK: !MDDerivedType(tag: DW_TAG_member, name: "__FuncPtr"
10// CHECK-SAME: baseType: ![[PTR:[0-9]+]]
11// CHECK: ![[PTR]] = !MDDerivedType(tag: DW_TAG_pointer_type,
12// CHECK-SAME: baseType: ![[FNTYPE:[0-9]+]]
13// CHECK: ![[FNTYPE]] = !MDSubroutineType(types: ![[ARGS:[0-9]+]])
Stephen Hines0e2c34f2015-03-23 12:09:02 -070014// CHECK: ![[ARGS]] = !{![[BOOL]], ![[ID]]}
Stephen Hines176edba2014-12-01 14:53:08 -080015
16int main()
17{
18 SomeKindOfPredicate p = ^BOOL(id obj) { return obj != nil; };
Pirama Arumuga Nainar3ea9e332015-04-08 08:57:32 -070019 // CHECK: !MDDerivedType(tag: DW_TAG_member, name: "__FuncPtr",
20 // CHECK-SAME: line: [[@LINE-2]]
21 // CHECK-SAME: size: 64, align: 64, offset: 128,
Stephen Hines176edba2014-12-01 14:53:08 -080022 return p(nil);
23}