The VERIFY_CHECK
macro still evaluates its argument in non-VERIFY mode, to make sure that in case it has any side effects (intentionally or unintentionally) that are relevant to the code, these also apply in production builds.
This isn’t always desirable. If nontrivial functions are invoked inside of them the compiler may be unable to optimize the call out, resulting in performance degradation or even the introduction of non-constant-time behavior where that is unexpected.
This adds a new VERIFY_ONLY_CHECK
macro that does not evaluate its argument (it is still compiled inside an if (0)
though to guarantee syntactic correctness), for this purpose, and changes some nontrivial calls to use it.