On 24.08.2022 12:45, Juergen Gross wrote:
> On 24.08.22 12:35, Jan Beulich wrote:
>> On 24.08.2022 12:22, Juergen Gross wrote:
>>> Hitting an ASSERT_UNREACHABLE() is always wrong, so even in production
>>> builds a warning seems to be appropriate when hitting one.
>>
>> I disagree, for two reasons: This violates the implication of NDEBUG
>> meaning ASSERT() and friends expand to no actual code. Plus if doing so
> 
> This is something we can change IMHO.
> 
>> for ASSERT_UNREACHABLE(), why would we not do the same for ASSERT()?
> 
> There are multiple reasons to have ASSERT()s. Some serve as a kind of
> documentation (e.g. to document that the programmer thought of a special
> case not being possible), or they are meant to catch hard to diagnose
> bugs rather early instead of letting them hit later in a situation where
> it wouldn't be clear what caused them. Adding a WARN() for all of these
> cases isn't really appropriate, especially as this might impact
> performance due to added tests, which isn't the case for theoretically
> unreachable code.
> 
>> There's a reason we have ASSERT() and friends and, independently,
>> WARN_ON() / BUG_ON() et al.
> 
> We might want to introduce something like ASSERT_OR_WARN(). I'm sure
> this could be useful in some cases.

I'm curious why in such cases it can't just be WARN_ON().

Jan

Reply via email to