> On Nov 26, 2014, at 11:40 , Gedare Bloom <ged...@rtems.org> wrote: > > What is the difference between the previous two variants? Would you > expect to optimize out "Assert_known" in all production code? >
"Assert_known_not_NULL" implies that either someone broke the code (the known assertion no longer applies due to a new bug) or that there is memory corruption (a previously asserted non-NULL pointer is now NULL). This should never be optimized away - you want to know that this has happened, something is really, really wrong. "Assert_not_NULL" implies laziness (or expedience?) in production code. The call chain down to the asserting function hasn't been analyzed to know that a passed in pointer is not NULL, and all you want to do today is shutdown if the passed-in pointer is NULL. Both situations require a fail-safe shutdown but you want to know that the first happened. The second can be handled in an exception by de-referencing low memory, the first needs to be treated more seriously. They should be handled differently because the first is so much worse than the second. Peter ----------------- Peter Dufault HD Associates, Inc. Software and System Engineering _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel