``` bool b; if (b) printf("1 "); if (!b) printf("2 "); ```
might print `1 2 `.
To my knowledge there is no C compiler that promises to always handle all forms of UB consistently. The closest you could get would probably be something like Valgrind.
Use your brain and use your tools. C is not really that hard for a large number of problem sets.
If their salaries cannot find them, where are they?
Do we have a candidate to prove their secure reports as being wrong?
In an embedded context, such bugs may be extremely costly to fix, if it's even possible.
> modern compilers will flag uninitialized variables
Reading uninitialized variables is one of the more easily prevented forms of undefined behaviour. As pjmlp points out, undefined behaviour in C/C++ programs is one of the major sources of security vulnerabilities in today's software.