|
|
|
@ -88,7 +88,7 @@ These optimizations also tend to prove the soundness of bigger optimizations
|
|
|
|
|
such as loop vectorization, constant propagation, and dead code elimination.
|
|
|
|
|
|
|
|
|
|
In the previous example, we used the fact that `&mut u32` can't be aliased to prove
|
|
|
|
|
that writes to `*output` can't possibly affect `*input`. This let us cache `*input`
|
|
|
|
|
that writes to `*output` can't possibly affect `*input`. This lets us cache `*input`
|
|
|
|
|
in a register, eliminating a read.
|
|
|
|
|
|
|
|
|
|
By caching this read, we knew that the write in the `> 10` branch couldn't
|
|
|
|
|