This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH B2/2] Use builtin_unreachable in assert


On 03/01/2015 11:43 PM, Mike Frysinger wrote:
> On 09 Jan 2015 10:16, Richard Henderson wrote:
>> Finally, use __builtin_unreachable to tell the compiler about
>> impossible paths.
> 
> i'm not sure this is the way to go.  the expectation (as required by POSIX)
> is that you're guaranteed there are no side-effects when NDEBUG is applied
> to assert.  by using __builtin_unreachable, that is no longer the case.

I wonder if, during the gcc 6 development cycle, we should experiment with a
__builtin_side_effects_p, akin to __builtin_constant_p.  Then we could still
follow POSIX re no side effects but even in the external context provide the
information derivable from __builtin_unreachable.  I.e.

#define assert(X) \
  (__builtin_side_effects_p (X) || !(X) ? 0 : __builtin_unreachable ())



r~


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]