summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilly Tarreau <w@1wt.eu>2020-08-21 05:48:34 +0200
committerWilly Tarreau <w@1wt.eu>2020-08-21 05:54:00 +0200
commit6ce0232a78cf6f94d82a6614317689523877b286 (patch)
tree9d60613e0111104dbe7a01b430d3bb755f69ad17
parent3005306a7143f065f99b0231ed1f350b7226e898 (diff)
downloadhaproxy-6ce0232a78cf6f94d82a6614317689523877b286.tar.gz
BUILD: task: work around a bogus warning in gcc 4.7/4.8 at -O1
As reported in issue #816, when building task.o at -O1 with gcc 4.7 or 4.8, we get the following warning: CC src/task.o In file included from include/haproxy/proxy.h:31:0, from include/haproxy/cfgparse.h:27, from src/task.c:19: src/task.c: In function 'next_timer_expiry': include/haproxy/ticks.h:121:10: warning: 'key' may be used uninitialized in this function [-Wmaybe-uninitialized] src/task.c:349:2: note: 'key' was declared here It is wrong since the condition to use 'key' is exactly the same as the one used to set it. This warning disappears at -O2 and disappeared from gcc 5 and above. Let's just initialize 'key' there, it only adds 16 bytes of code and remains cheap enough for this function. This should be backported to 2.2.
-rw-r--r--src/task.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/task.c b/src/task.c
index c91316cbb..cabfcbe1e 100644
--- a/src/task.c
+++ b/src/task.c
@@ -346,7 +346,7 @@ int next_timer_expiry()
struct task_per_thread * const tt = sched; // thread's tasks
struct eb32_node *eb;
int ret = TICK_ETERNITY;
- __decl_thread(int key);
+ __decl_thread(int key = TICK_ETERNITY);
/* first check in the thread-local timers */
eb = eb32_lookup_ge(&tt->timers, now_ms - TIMER_LOOK_BACK);