> From: Giovanni Bajo <[EMAIL PROTECTED]> >> Diego Novillo <[EMAIL PROTECTED]> wrote: >>> There has been some opposition in the past about allowing conditions in >>> asserts to be used as hints to the optimizers. In fact, I would like to >>> know if there is a current statement of purpose about this. That is, > would >>> there be strong oppositions to patches doing this? >>> >> VRP naturally takes advantage of assert (though not in some >> occassions involving unsigned types). Try: >> >> #include <assert.h> >> >> foo (int i) >> { >> assert (i != 0); >> if (i == 0) >> return 3; >> >> return 2; >> } > > Agreed, but my point is whether we can do that when NDEBUG is defined.
Might be nice to have both flavors, or take a parameter which indicates if it's meant to be a static assertion, or throw a named runtime exception; where the static assertion inhibit code generation simply inhibits code generation somehow? as their requirement is not mutually exclusive.