Torbjorn Granlund tg at
Mon Feb 24 11:31:08 UTC 2014

bodrato at writes:

  Il Ven, 17 Gennaio 2014 1:10 pm, Vincent Lefevre ha scritto:
  > you may also have optimizations based on the fact that some variable
  > cannot be zero. But you have no types that don't include zero. The
  > right solution is to make sure that the compiler knows the range.
  > #define HINT(expr) ((expr) || (__builtin_unreachable(), 0))
  This can be interesting in some contexts.
  Moreover, most of the ASSERTs we have in the code might be changed into
  HINTs when we do not want asserts, because they can give some information
  to the compiler...
   #define ASSERT_OR_HINT(expr) ASSERT(expr)
   #define ASSERT_OR_HINT(expr) HINT(expr)
I am interested if that even makes the object code change with some gcc
version.  Better try a recent one.

If an ASSERT contains a volatile pointer one better avoids the HINT

Please encrypt, key id 0xC8601622

More information about the gmp-devel mailing list