brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · 173b9d2 Raw
58 lines · c
1// RUN: %clang_cc1 -triple i386-unknown-unknown -fopenmp %s -emit-llvm -o - -disable-llvm-optzns | FileCheck %s --check-prefix=RUN12 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);6}7 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);11}12 13void *broker2(void (*callee)(void));14 15// RUN1-DAG: declare !callback ![[cid2:[0-9]+]] ptr @broker216__attribute__((callback(callee))) void *broker2(void (*callee)(void));17 18void *broker2(void (*callee)(void));19 20// RUN1-DAG: declare !callback ![[cid3:[0-9]+]] ptr @broker321__attribute__((callback(4, 1, 2, c))) void *broker3(int, int, int c, int (*callee)(int, int, int), int);22 23// RUN1-DAG: declare !callback ![[cid4:[0-9]+]] ptr @broker424__attribute__((callback(4, -1, a, __))) void *broker4(int a, int, int, int (*callee)(int, int, int), int);25 26// RUN1-DAG: declare !callback ![[cid5:[0-9]+]] ptr @broker527__attribute__((callback(4, d, 5, 2))) void *broker5(int, int, int, int (*callee)(int, int, int), int d);28 29static void *VoidPtr2VoidPtr(void *payload) {30  return payload;31}32 33static int ThreeInt2Int(int a, int b, int c) {34  return a * b + c;35}36 37void foo(void) {38  broker0(VoidPtr2VoidPtr, 0l);39  broker1(0l, VoidPtr2VoidPtr);40  broker2(foo);41  broker3(1, 4, 5, ThreeInt2Int, 1);42  broker4(4, 2, 7, ThreeInt2Int, 0);43  broker5(8, 0, 3, ThreeInt2Int, 4);44}45 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}58