3 ms·
int unused = 1 / 0; is undefined behaviour. The compiler can replace it with anything it wants. Like for instance a return true. Compilers usually (ab-)use thi
by legulere 10y ago
int unused = 1 / 0;
is undefined behaviour. The compiler can replace it with anything it wants. Like for instance a return true. Compilers usually (ab-)use this to remove branches.
- adrianratnapala 10y agoNo need to for parentheses around "ab" in abuse. This is just bad behaviour from compilers trying to optimise for benchmarks. The right thing to do is to issue an error or warning, and then not make absurd assumptions about other variables. A good explanation of all this can be found here: http://c9x.me/compile/bib/ubc.pdf http://c9x.me/compile/bib/ubc.pdf
- legulere 10y agoI guess the problem with issuing warnings is that dead code can also contain undefined behaviour, so the compiler would probably produce lots of false positives.