]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
(__builtin_constant_p) [__GNUC__ <= 2]: Define to 1.
authorJim Meyering <jim@meyering.net>
Mon, 5 Sep 2005 16:57:40 +0000 (16:57 +0000)
committerJim Meyering <jim@meyering.net>
Mon, 5 Sep 2005 16:57:40 +0000 (16:57 +0000)
(verify_type__) [verify_error_if_non_const__]: New member/test,
to help detect when verify or verify_expr is mistakenly passed
a non-constant argument within a function.

lib/verify.h

index 4461f4e47bc477ebfb6fab07feb7f31ea3841849..099d27061b2c3dff5633fa3d94f9a23cbb1b13ce 100644 (file)
 # define GL_CONCAT0(x, y) x##y
 # define GL_CONCAT(x, y) GL_CONCAT0 (x, y)
 
+/* If gcc predates 3.0, then disable the check below to ensure
+   that verify_type__'s argument is a constant expression.  */
+# if __GNUC__ <= 2
+#  defined __builtin_constant_p(R) 1
+# endif
+
 /* A type that is valid if and only if R is nonzero.
    R should be an integer constant expression.
    verify_type__ and verify_error_if_negative_size__ are symbols that
    are private to this header file.  */
 
 # define verify_type__(R) \
-    struct { int verify_error_if_negative_size__[(R) ? 1 : -1]; }
+    struct { \
+      /* Provoke a compile-time failure if R is a non-constant expression. */ \
+      int verify_error_if_non_const__[__builtin_constant_p (R) ? 1 : -1]; \
+      /* Provoke a compile-time failure if R is nonzero.  */ \
+      int verify_error_if_negative_size__[(R) ? 1 : -1]; }
 
 /* Verify requirement R at compile-time, as a declaration.
    R should be an integer constant expression.