We discovered recently that compilers (for us it is GCC) can optimize some code in conjunction with asserts set by developers.
This code for example:
#include <cassert>
int getBatteryLevel(){
return 0;
}
int process(int level);
int main() {
[[maybe_unused]] const auto level = getBatteryLevel();
assert(level > 0);
process(level);
}
Will link with -O2
even if process
has no implementation. It does not link without optimizations.
Is this documented anywhere?