Re: kernel/time/hrtimer.c:1483:14: warning: variable 'expires_in_hardirq' set but not used
From: Sebastian Andrzej Siewior
Date: Mon Nov 20 2023 - 10:17:57 EST
On 2023-11-12 08:52:44 [+0800], kernel test robot wrote:
> Hi Sebastian,
Hi,
> FYI, the error/warning still remains.
>
> kernel/time/hrtimer.c:120:35: warning: initialized field overwritten [-Woverride-init]
> 120 | [CLOCK_REALTIME] = HRTIMER_BASE_REALTIME,
> | ^~~~~~~~~~~~~~~~~~~~~
> kernel/time/hrtimer.c:120:35: note: (near initialization for 'hrtimer_clock_to_base_table[0]')
> kernel/time/hrtimer.c:121:35: warning: initialized field overwritten [-Woverride-init]
> 121 | [CLOCK_MONOTONIC] = HRTIMER_BASE_MONOTONIC,
> | ^~~~~~~~~~~~~~~~~~~~~~
> kernel/time/hrtimer.c:121:35: note: (near initialization for 'hrtimer_clock_to_base_table[1]')
> kernel/time/hrtimer.c:122:35: warning: initialized field overwritten [-Woverride-init]
> 122 | [CLOCK_BOOTTIME] = HRTIMER_BASE_BOOTTIME,
> | ^~~~~~~~~~~~~~~~~~~~~
> kernel/time/hrtimer.c:122:35: note: (near initialization for 'hrtimer_clock_to_base_table[7]')
> kernel/time/hrtimer.c:123:35: warning: initialized field overwritten [-Woverride-init]
> 123 | [CLOCK_TAI] = HRTIMER_BASE_TAI,
> | ^~~~~~~~~~~~~~~~
> kernel/time/hrtimer.c:123:35: note: (near initialization for 'hrtimer_clock_to_base_table[11]')
This is "okay". The array is first initialized completely to a safe
value and then a few of the individual values are overwritten.
So this "initialized field overwritten", that the compiler complains
about, is intended here.
> kernel/time/hrtimer.c: In function '__run_hrtimer':
> >> kernel/time/hrtimer.c:1483:14: warning: variable 'expires_in_hardirq' set but not used [-Wunused-but-set-variable]
> 1483 | bool expires_in_hardirq;
> | ^~~~~~~~~~~~~~~~~~
This is because the code using it is disabled at build time. I could
tweak the code to make look it used in the off case so the warning goes
away.
Sebastian