If there is a C or C++ code like this:
if (func())
;
can compiler optimise out call to function func()
if it cannot be sure whether function has any side-effects?
Origin of my question: I sometimes call assert macros in a way like this:
if (func())
assert(0);
if I want to make sure that func()
is always called and that asssertion fails in debug mode if func()
returns wrong value. But recently I was warned that my code doesn't guarantee that function is always called.