let clang use the constant-return error() macro
authorJeff King <peff@peff.net>
Tue, 6 May 2014 15:17:50 +0000 (11:17 -0400)
committerJunio C Hamano <gitster@pobox.com>
Tue, 6 May 2014 22:30:40 +0000 (15:30 -0700)
Commit e208f9c converted error() into a macro to make its
constant return value more apparent to calling code. Commit
5ded807 prevents us using this macro with clang, since
clang's -Wunused-value is smart enough to realize that the
constant "-1" is useless in some contexts.

However, since the last commit puts the constant behind an
inline function call, this is enough to prevent the
-Wunused-value warning on both modern gcc and clang. So we
can now re-enable the macro when compiling with clang.

Tested with clang 3.3, 3.4, and 3.5.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
cache.h
git-compat-util.h
parse-options.h
diff --git a/cache.h b/cache.h
index 001b63f5cd0f31658686c566e1261c347ad36fa0..86be95e6d9c85095508b4c396207cca1a50ac413 100644 (file)
--- a/cache.h
+++ b/cache.h
@@ -1183,7 +1183,7 @@ extern int check_repository_format_version(const char *var, const char *value, v
 extern int git_env_bool(const char *, int);
 extern int git_config_system(void);
 extern int config_error_nonbool(const char *);
-#if defined(__GNUC__) && ! defined(__clang__)
+#if defined(__GNUC__)
 #define config_error_nonbool(s) (config_error_nonbool(s), const_error())
 #endif
 extern const char *get_log_output_encoding(void);
index 90b988a5c191ed8810ea73ebfe30426bdeb083ba..38ff8030700466004ac7657777c028ce161ab973 100644 (file)
@@ -342,7 +342,7 @@ extern void warning(const char *err, ...) __attribute__((format (printf, 1, 2)))
  * trying to help gcc, anyway, it's OK; other compilers will fall back to
  * using the function as usual.
  */
-#if defined(__GNUC__) && ! defined(__clang__)
+#if defined(__GNUC__)
 static inline int const_error(void)
 {
        return -1;
index 1ef8da1f3e2b20bccfc856b03daab801f224579c..0a2b2e19a5019ba52552ae4c4c8fc35eb374bae0 100644 (file)
@@ -179,7 +179,7 @@ extern NORETURN void usage_msg_opt(const char *msg,
 
 extern int optbug(const struct option *opt, const char *reason);
 extern int opterror(const struct option *opt, const char *reason, int flags);
-#if defined(__GNUC__) && ! defined(__clang__)
+#if defined(__GNUC__)
 #define opterror(o,r,f) (opterror((o),(r),(f)), const_error())
 #endif