“Short circuit” normally describes the semantics of a construct like the C operator &&, which prohibits evaluation of the second operand if the first yields false. In this paper, the meaning of the term is extended to cover a very general transformation of conditional statements. The domain of the conditional expression, which may involve arithmetic as well as Boolean operators, is partitioned into regions with the following properties: If the values of the variables lie in some of the regions, the value of the expression is known; it is cheaper to determine that the values of the variables lie in those regions than it is to evaluate the expression; and, given typical program usage, there is a high probability that the variables will have values lying in some of those regions.
This optimization is intended for embedded systems, where the application is well understood and the ratio of execution time to compilation time is very high. The authors report speed improvements and power reductions over a wide range for code segments extracted from typical applications, but not for complete programs.
The paper explains the technique clearly, and provides evidence that real programs contain conditional statements that it can speed up considerably. I remain unconvinced, however, that there will be a significant improvement in the performance of the overall system.