when building software for avionics (DO-178B) Level A (critical to safety) one must test every path in the code. The difficult paths to prove they have been taken are generally the "shortcut" paths. Thus it is often easier to test the crash cases yourself as: if(pointer != NULL) { if(pointer->object) { do whatever One can still do this even with short cutting, it is just expressions such as: if((A || B) && (C || D)) These have several shortcut paths. To defeat this, one could convert the bools to unsigned int and // no shortcutting on bit ops as the compiler thinks I need all 16 bits X = (A | B) & (C | D); if(X != 0) { do this or that But this seems more awkward and harder to manage (code reviews etc) than just defeating the shortcut code generation... Make sense or no? Jim Fisher