Add missing zstd.h to coregrind Makefile.am noinst_HEADERS
[valgrind.git] / massif / tests / inlinfomalloc.c
blob1757636a1e4392afd92d5bab4e912db595b20c8f
1 #include <stdio.h>
2 #include <stdlib.h>
4 #define INLINE inline __attribute__((always_inline))
6 int alloc (int n) {
7 (void) malloc (n);
8 return n;
11 INLINE int fun_d(int argd) {
12 static int locd = 0;
13 if (argd > 0)
14 locd += argd;
15 return alloc (locd);
18 INLINE int fun_c(int argc) {
19 static int locc = 0;
20 locc += argc;
21 return fun_d(locc);
24 INLINE int fun_b(int argb) {
25 static int locb = 0;
26 locb += argb;
27 return fun_c(locb);
30 INLINE int fun_a(int arga) {
31 static int loca = 0;
32 loca += arga;
33 return fun_b(loca);
36 __attribute__((noinline))
37 static int fun_noninline_m(int argm)
39 return fun_d(argm);
42 __attribute__((noinline))
43 static int fun_noninline_o(int argo)
45 static int loco = 0;
46 if (argo > 0)
47 loco += argo;
48 return alloc (loco);
51 INLINE int fun_f(int argf) {
52 static int locf = 0;
53 locf += argf;
54 return fun_noninline_o(locf);
57 INLINE int fun_e(int arge) {
58 static int loce = 0;
59 loce += arge;
60 return fun_f(loce);
63 __attribute__((noinline))
64 static int fun_noninline_n(int argn)
66 return fun_e(argn);
70 int main() {
71 int result = 100000;
72 result = fun_a(result);
73 result += fun_b(result);
74 result += fun_noninline_m(result);
75 result += fun_d(result);
76 result += fun_noninline_n(result);
77 return 0;