unsigned foo(unsigned max, unsigned size) { if (size >= max) return max; else { if (size >= 8) return 8; else if (size >= 4) return 4; else if (size >= 2) return 2; else return 1; } } int main(void) { unsigned i, l, max; volatile val; for (i = 0; i < 100000000; i++) { for (max = 1; max <= 8; max <<= 1) { for (l = 1; l <= 8; l++) val = foo(max, l); } } return 0; }