[rtems commit] schedulerpriority.h: Fix gcc 12 warning
Chris Johns
chrisj at rtems.org
Mon Aug 29 22:24:23 UTC 2022
On 30/8/2022 6:39 am, Joel Sherrill wrote:
> On Mon, Aug 29, 2022 at 2:41 AM Sebastian Huber
> <sebastian.huber at embedded-brains.de <mailto:sebastian.huber at embedded-brains.de>>
> wrote:
>
> On 29/08/2022 09:30, Chris Johns wrote:
> > On 29/8/22 5:07 pm, Sebastian Huber wrote:
> >> On 19/08/2022 22:46, Joel Sherrill wrote:
> >>> Module: rtems
> >>> Branch: master
> >>> Commit: 5b875915152a248079855bcb98e871f70ac314cc
> >>> Changeset:
> >>>
> http://git.rtems.org/rtems/commit/?id=5b875915152a248079855bcb98e871f70ac314cc
> <http://git.rtems.org/rtems/commit/?id=5b875915152a248079855bcb98e871f70ac314cc>
> >>>
> >>> Author: Ryan Long<ryan.long at oarcorp.com <mailto:ryan.long at oarcorp.com>>
> >>> Date: Tue Aug 16 12:00:26 2022 -0500
> >>>
> >>> schedulerpriority.h: Fix gcc 12 warning
> >>>
> >>> Changed the size of the array to 1 to get rid of the warning.
> >>>
> >>> Updates #4662
> >>>
> >>> ---
> >>>
> >>> cpukit/include/rtems/score/schedulerpriority.h | 2 +-
> >>> 1 file changed, 1 insertion(+), 1 deletion(-)
> >>>
> >>> diff --git a/cpukit/include/rtems/score/schedulerpriority.h
> >>> b/cpukit/include/rtems/score/schedulerpriority.h
> >>> index cf5d0762a9..e485e97c60 100644
> >>> --- a/cpukit/include/rtems/score/schedulerpriority.h
> >>> +++ b/cpukit/include/rtems/score/schedulerpriority.h
> >>> @@ -94,7 +94,7 @@ typedef struct {
> >>> /**
> >>> * @brief One ready queue per priority level.
> >>> */
> >>> - Chain_Control Ready[ 0 ];
> >>> + Chain_Control Ready[ 1 ];
> >>> } Scheduler_priority_Context;
> >> Increasing the storage size to fix a warning is the wrong approach. The
> warning
> >> should be suppressed in the application configuration header or the
> >> configuration should be changed to account for the new chain control.
> > Why do you say this is right or a better approach?
>
> A warning fix should not increase the storage size on the target. The
> Ready member is a flexible array those size is defined by the
> application configuration. This approach is used in several places. The
> declaration should be actually:
>
> Chain_Control Ready[ RTEMS_ZERO_LENGTH_ARRAY ];
>
>
> The change to [1] was from a gcc documentation recommendation. Per
> 6.18 Arrays of Length Zero in the info installed with our GCC version, [0]
> is a GNU extension and [1] is the C90 way to do it. We should not be using
> a GNU extension.
>
> In code which uses this construct (whether 0 or 1), if done in headers,
> we can't assume users will compile with the array-bounds and/or
> -Wzero-length-bounds disabled. If the warning is triggered in a header,
> then it should be bracketed with the macros to disable the warning
> temporarily.
I can see why the compiler does not like `[0]`. Why waste time and effort
managing a variable that has no size? It looks like a coding convenience the
compiler is now warning about. I see no point fighting the compiler.
Sebastian, where does making it 1 effect the code or target data size?
Do we have more cases of this that need to be considered?
Chris
More information about the devel
mailing list