Using the Safe Optimize option reduces the amount of compiler optimization but protects your code against compiler-induced errors.
Safe optimizing prevents runtime uncertainty that could cause an optimized program to fail, even though the source code seems to be correct.
For example, imagine the following situation:
Now there are two possible conditions. If the value assigned through setq is intended to alter the definition of the function calculate-corner, direct linking will prevent this from happening. The first definition will be referenced directly and cannot be changed by the setq function. On the other hand, if the identical names are handled independently, calculate-corner can be linked without creating incorrect code.
If safe optimizing is enabled, the compiler will always stay on the safe side, even if you explicitly request that calculate-corner be directly linked. This may result in less efficient code, but it ensures code correctness. If safe optimizing is disabled, you can override the compiler's recommendation to link calculate-corner indirectly. You are responsible for the link option.
The Safe Optimize mode is enabled by default. Be sure you fully understand the consequences before disabling it.