extern int v; extern int bar2 (void); extern int bar4 (void); int v; static int foo2 (int *x, int *y) { int mask = 0; if (v & 1) { mask = 1; *x = v; } if (v & 2) { mask |= 2; *y = v; } return mask; } int bar2 (void) { int sum = 0; int x, y; int mask = foo2 (&x, &y); if (mask & 1) sum += x; if (mask & 2) sum += y; return sum; } static int foo4 (int *x, int *y, int *w, int *h) { int mask = 0; if (v & 1) { mask = 1; *x = v; } if (v & 2) { mask |= 2; *y = v; } if (v & 4) { mask |= 4; *w = v; } if (v & 8) { mask |= 8; *h = v; } return mask; } int bar4 (void) { int sum = 0; int x, y, w, h; int mask = foo4 (&x, &y, &w, &h); if (mask & 1) sum += x; if (mask & 2) sum += y; if (mask & 4) sum += w; if (mask & 8) sum += h; return sum; }