diff options
author | Willy Tarreau <w@1wt.eu> | 2020-08-21 05:48:34 +0200 |
---|---|---|
committer | Willy Tarreau <w@1wt.eu> | 2020-08-21 05:54:00 +0200 |
commit | 6ce0232a78cf6f94d82a6614317689523877b286 (patch) | |
tree | 9d60613e0111104dbe7a01b430d3bb755f69ad17 | |
parent | 3005306a7143f065f99b0231ed1f350b7226e898 (diff) | |
download | haproxy-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.c | 2 |
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); |