1 // RUN: %clang_cc1 -triple i386-unknown-unknown -fopenmp %s -emit-llvm -o - -disable-llvm-optzns | FileCheck %s --check-prefix=RUN1
3 // RUN1-DAG: @broker0({{[^#]*#[0-9]+}} !callback ![[cid0:[0-9]+]]
4 __attribute__((callback(1, 2))) void *broker0(void *(*callee
)(void *), void *payload
) {
5 return callee(payload
);
8 // RUN1-DAG: @broker1({{[^#]*#[0-9]+}} !callback ![[cid1:[0-9]+]]
9 __attribute__((callback(callee
, payload
))) void *broker1(void *payload
, void *(*callee
)(void *)) {
10 return broker0(callee
, payload
);
13 void *broker2(void (*callee
)(void));
15 // RUN1-DAG: declare !callback ![[cid2:[0-9]+]] ptr @broker2
16 __attribute__((callback(callee
))) void *broker2(void (*callee
)(void));
18 void *broker2(void (*callee
)(void));
20 // RUN1-DAG: declare !callback ![[cid3:[0-9]+]] ptr @broker3
21 __attribute__((callback(4, 1, 2, c
))) void *broker3(int, int, int c
, int (*callee
)(int, int, int), int);
23 // RUN1-DAG: declare !callback ![[cid4:[0-9]+]] ptr @broker4
24 __attribute__((callback(4, -1, a
, __
))) void *broker4(int a
, int, int, int (*callee
)(int, int, int), int);
26 // RUN1-DAG: declare !callback ![[cid5:[0-9]+]] ptr @broker5
27 __attribute__((callback(4, d
, 5, 2))) void *broker5(int, int, int, int (*callee
)(int, int, int), int d
);
29 static void *VoidPtr2VoidPtr(void *payload
) {
33 static int ThreeInt2Int(int a
, int b
, int c
) {
38 broker0(VoidPtr2VoidPtr
, 0l);
39 broker1(0l, VoidPtr2VoidPtr
);
41 broker3(1, 4, 5, ThreeInt2Int
, 1);
42 broker4(4, 2, 7, ThreeInt2Int
, 0);
43 broker5(8, 0, 3, ThreeInt2Int
, 4);
46 // RUN1-DAG: ![[cid0]] = !{![[cid0b:[0-9]+]]}
47 // RUN1-DAG: ![[cid0b]] = !{i64 0, i64 1, i1 false}
48 // RUN1-DAG: ![[cid1]] = !{![[cid1b:[0-9]+]]}
49 // RUN1-DAG: ![[cid1b]] = !{i64 1, i64 0, i1 false}
50 // RUN1-DAG: ![[cid2]] = !{![[cid2b:[0-9]+]]}
51 // RUN1-DAG: ![[cid2b]] = !{i64 0, i1 false}
52 // RUN1-DAG: ![[cid3]] = !{![[cid3b:[0-9]+]]}
53 // RUN1-DAG: ![[cid3b]] = !{i64 3, i64 0, i64 1, i64 2, i1 false}
54 // RUN1-DAG: ![[cid4]] = !{![[cid4b:[0-9]+]]}
55 // RUN1-DAG: ![[cid4b]] = !{i64 3, i64 -1, i64 0, i64 -1, i1 false}
56 // RUN1-DAG: ![[cid5]] = !{![[cid5b:[0-9]+]]}
57 // RUN1-DAG: ![[cid5b]] = !{i64 3, i64 4, i64 4, i64 1, i1 false}