For those processors that have an explicit compilephase, use-when filtering is intended to avoid compiling blocks of code that the processor couldn't execute.
For instance, if the attempt to compile a program fails due to unresolved symbols, it's possible that an earlier phase of the build process did something wrong!