do { break; } while(0) will cause trouble if you do a loop unroll during optimization