diff options
author | Colin Watson <cjwatson@debian.org> | 2020-06-01 18:06:29 +0100 |
---|---|---|
committer | Colin Watson <cjwatson@debian.org> | 2020-06-01 18:06:29 +0100 |
commit | 3cb95d6411ace1f422db912a7a019511899b0e3f (patch) | |
tree | e6bbe1f936ebeb1462b4a3efdaba305ba3e7000b /gl/lib/assure.h | |
parent | ea9974fa9eea80f19126edbd7e132186d153d2b2 (diff) | |
parent | f0621ef0556b55ece404ea57808f0e3773c5dc64 (diff) |
Import man-db_2.9.2.orig.tar.xz
Diffstat (limited to 'gl/lib/assure.h')
-rw-r--r-- | gl/lib/assure.h | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/gl/lib/assure.h b/gl/lib/assure.h index 8ea2f6e4..09a4edfa 100644 --- a/gl/lib/assure.h +++ b/gl/lib/assure.h @@ -21,12 +21,32 @@ #define _GL_ASSURE_H #include <assert.h> +#include "verify.h" + +/* Evaluate an assertion E that is guaranteed to be true. + If NDEBUG is not defined, abort the program if E is false. + If NDEBUG is defined, the compiler can assume E and behavior is + undefined if E is false, fails to evaluate, or has side effects. + + Unlike standard 'assert', this macro evaluates E even when NDEBUG + is defined, so as to catch typos, avoid some GCC warnings, and + improve performance when E is simple enough. + + Also see the documentation for 'assume' in verify.h. */ + +#ifdef NDEBUG +# define affirm(E) assume (E) +#else +# define affirm(E) assert (E) +#endif /* Check E's value at runtime, and report an error and abort if not. However, do nothing if NDEBUG is defined. - Unlike standard 'assert', this macro always compiles E even when NDEBUG - is defined, so as to catch typos and avoid some GCC warnings. */ + Unlike standard 'assert', this macro compiles E even when NDEBUG + is defined, so as to catch typos and avoid some GCC warnings. + Unlike 'affirm', it is OK for E to use hard-to-optimize features, + since E is not executed if NDEBUG is defined. */ #ifdef NDEBUG # define assure(E) ((void) (0 && (E))) |