File: attr-callback.c

package info (click to toggle)
llvm-toolchain-15 1%3A15.0.6-4
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 1,554,644 kB
  • sloc: cpp: 5,922,452; ansic: 1,012,136; asm: 674,362; python: 191,568; objc: 73,855; f90: 42,327; lisp: 31,913; pascal: 11,973; javascript: 10,144; sh: 9,421; perl: 7,447; ml: 5,527; awk: 3,523; makefile: 2,520; xml: 885; cs: 573; fortran: 567
file content (28 lines) | stat: -rw-r--r-- 1,544 bytes parent folder | download | duplicates (23)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// RUN: %clang_cc1 -triple i386-unknown-unknown %s -emit-llvm -o - | FileCheck %s

void cb0(void);

// CHECK-DAG: !callback ![[cid0:[0-9]+]] void @no_args
__attribute__((callback(1))) void no_args(void (*callback)(void));

// CHECK-DAG: @args_1({{[^#]*#[0-9]+}} !callback ![[cid1:[0-9]+]]
__attribute__((callback(1, 2, 3))) void args_1(void (*callback)(int, double), int a, double b) { no_args(cb0); }

// CHECK-DAG: !callback ![[cid2:[0-9]+]]  void @args_2a
__attribute__((callback(2, 3, 3))) void args_2a(int a, void (*callback)(double, double), double b);
// CHECK-DAG: !callback ![[cid2]]         void @args_2b
__attribute__((callback(callback, b, b))) void args_2b(int a, void (*callback)(double, double), double b);

// CHECK-DAG: void @args_3a({{[^#]*#[0-9]+}} !callback ![[cid3:[0-9]+]]
__attribute__((callback(2, -1, -1))) void args_3a(int a, void (*callback)(double, double), double b) { args_2a(a, callback, b); }
// CHECK-DAG: void @args_3b({{[^#]*#[0-9]+}} !callback ![[cid3]]
__attribute__((callback(callback, __, __))) void args_3b(int a, void (*callback)(double, double), double b) { args_2b(a, callback, b); }

// CHECK-DAG: ![[cid0]] = !{![[cid0b:[0-9]+]]}
// CHECK-DAG: ![[cid0b]] = !{i64 0, i1 false}
// CHECK-DAG: ![[cid1]] = !{![[cid1b:[0-9]+]]}
// CHECK-DAG: ![[cid1b]] = !{i64 0, i64 1, i64 2, i1 false}
// CHECK-DAG: ![[cid2]] = !{![[cid2b:[0-9]+]]}
// CHECK-DAG: ![[cid2b]] = !{i64 1, i64 2, i64 2, i1 false}
// CHECK-DAG: ![[cid3]] = !{![[cid3b:[0-9]+]]}
// CHECK-DAG: ![[cid3b]] = !{i64 1, i64 -1, i64 -1, i1 false}