From: Jeff King <peff@peff.net>
To: Felipe Contreras <felipe.contreras@gmail.com>
Cc: Max Horn <max@quendi.de>, git@vger.kernel.org
Subject: [PATCH 2/2] let clang use the constant-return error() macro
Date: Tue, 6 May 2014 11:17:50 -0400 [thread overview]
Message-ID: <20140506151750.GB25768@sigill.intra.peff.net> (raw)
In-Reply-To: <20140505212938.GA16715@sigill.intra.peff.net>
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>
---
I still get warnings when compiling with clang -O3, due to
-Warray-bounds. It looks like a bug, though. Clang complains that:
strcmp(argv[1], "git")
oversteps array bounds when the strcmp is expanded into a mess of
builtin magic. So I don't think we are doing anything wrong here.
cache.h | 2 +-
git-compat-util.h | 2 +-
parse-options.h | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/cache.h b/cache.h
index e2f12b0..35a3e6b 100644
--- a/cache.h
+++ b/cache.h
@@ -1271,7 +1271,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);
diff --git a/git-compat-util.h b/git-compat-util.h
index b4c437e..70dc028 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -330,7 +330,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;
diff --git a/parse-options.h b/parse-options.h
index 2f9be96..7940bc7 100644
--- a/parse-options.h
+++ b/parse-options.h
@@ -176,7 +176,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
--
2.0.0.rc1.436.g03cb729
next prev parent reply other threads:[~2014-05-06 16:46 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-04 6:12 [PATCH 0/3] Fix a ton of compiler warnings Felipe Contreras
2014-05-04 6:12 ` [PATCH 1/3] Revert "make error()'s constant return value more visible" Felipe Contreras
2014-05-05 5:49 ` Jeff King
2014-05-05 5:45 ` Felipe Contreras
2014-05-05 6:02 ` Jeff King
2014-05-05 6:14 ` Felipe Contreras
2014-05-05 6:29 ` Jeff King
2014-05-05 7:30 ` Felipe Contreras
2014-05-05 21:29 ` Jeff King
2014-05-06 15:14 ` [PATCH 1/2] inline constant return from error() function Jeff King
2014-05-06 22:29 ` Junio C Hamano
2014-05-07 3:02 ` Jeff King
2014-05-11 17:22 ` Junio C Hamano
2014-05-12 18:13 ` Jeff King
2014-05-11 7:13 ` Felipe Contreras
2014-05-12 18:44 ` Jonathan Nieder
2014-05-12 18:56 ` Jeff King
2014-05-06 15:17 ` Jeff King [this message]
2014-05-04 6:12 ` [PATCH 2/3] Revert "silence some -Wuninitialized false positives" Felipe Contreras
2014-05-04 6:12 ` [PATCH 3/3] Silence a bunch of format-zero-length warnings Felipe Contreras
2014-05-04 19:01 ` brian m. carlson
2014-05-04 20:13 ` Felipe Contreras
2014-05-05 5:21 ` Jeff King
2014-05-07 18:19 ` Junio C Hamano
2014-05-07 20:05 ` Heiko Voigt
2014-05-07 20:31 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140506151750.GB25768@sigill.intra.peff.net \
--to=peff@peff.net \
--cc=felipe.contreras@gmail.com \
--cc=git@vger.kernel.org \
--cc=max@quendi.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).