Skip to content

Commit 87fe5df

Browse files
peffgitster
authored andcommitted
inline constant return from error() function
Commit e208f9c introduced a macro to turn error() calls into: (error(), -1) to make the constant return value more visible to the calling code (and thus let the compiler make better decisions about the code). This works well for code like: return error(...); but the "-1" is superfluous in code that just calls error() without caring about the return value. In older versions of gcc, that was fine, but gcc 4.9 complains with -Wunused-value. We can work around this by encapsulating the constant return value in a static inline function, as gcc specifically avoids complaining about unused function returns unless the function has been specifically marked with the warn_unused_result attribute. We also use the same trick for config_error_nonbool and opterror, which learned the same error technique in a469a10. Reported-by: Felipe Contreras <[email protected]> Signed-off-by: Jeff King <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 0bc85ab commit 87fe5df

File tree

3 files changed

+7
-3
lines changed

3 files changed

+7
-3
lines changed

cache.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1184,7 +1184,7 @@ extern int git_env_bool(const char *, int);
11841184
extern int git_config_system(void);
11851185
extern int config_error_nonbool(const char *);
11861186
#if defined(__GNUC__) && ! defined(__clang__)
1187-
#define config_error_nonbool(s) (config_error_nonbool(s), -1)
1187+
#define config_error_nonbool(s) (config_error_nonbool(s), const_error())
11881188
#endif
11891189
extern const char *get_log_output_encoding(void);
11901190
extern const char *get_commit_output_encoding(void);

git-compat-util.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -343,7 +343,11 @@ extern void warning(const char *err, ...) __attribute__((format (printf, 1, 2)))
343343
* using the function as usual.
344344
*/
345345
#if defined(__GNUC__) && ! defined(__clang__)
346-
#define error(...) (error(__VA_ARGS__), -1)
346+
static inline int const_error(void)
347+
{
348+
return -1;
349+
}
350+
#define error(...) (error(__VA_ARGS__), const_error())
347351
#endif
348352

349353
extern void set_die_routine(NORETURN_PTR void (*routine)(const char *err, va_list params));

parse-options.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ extern NORETURN void usage_msg_opt(const char *msg,
180180
extern int optbug(const struct option *opt, const char *reason);
181181
extern int opterror(const struct option *opt, const char *reason, int flags);
182182
#if defined(__GNUC__) && ! defined(__clang__)
183-
#define opterror(o,r,f) (opterror((o),(r),(f)), -1)
183+
#define opterror(o,r,f) (opterror((o),(r),(f)), const_error())
184184
#endif
185185

186186
/*----- incremental advanced APIs -----*/

0 commit comments

Comments
 (0)