[1] This is easily done in a single pass through the program, following acyclic chained jumps until the compiler arrives at a fixed point.
This makes way for further optimizations as there is a decrease in the number of conditionals, which will improve performance.
On average one can expect 2-3 instructions being omitted as a result from a successful removal of a runtime branch.
Another example shows jump threading of 2 partial overlap conditions: The above can be transformed into: If the first branch is taken, x and y are both true (logical conjunction), hence evaluation of expression y || z is not needed (logical disjunction).
You can help Wikipedia by expanding it.This programming language theory or type theory-related article is a stub.