[PATCH] treewide: improve strict-aliasing
Morten Brørup
mb at smartsharesystems.com
Mon Aug 31 17:09:54 CEST 2026
> From: Robin Jarry [mailto:rjarry at redhat.com]
> Sent: Monday, 31 August 2026 16.13
>
> Morten Brørup, Aug 31, 2026 at 08:36:
> > Grout is built with -Wstrict-aliasing=2, which requires
> > type casting to the generic "void *", like this:
> >
> > struct conn *conn;
> > // create a new connection object
> > if (rte_mempool_get(conn_pool, (void *)&conn) < 0)
> > return NULL;
> >
> > Change to -Wstrict-aliasing=3, so we can use more accurate
> > type casting, like this:
> >
> > struct conn *conn;
> > // create a new connection object
> > if (rte_mempool_get(conn_pool, (void **)&conn) < 0)
> > return NULL;
> >
> > Grout currently compiles just fine with -Wstrict-aliasing=3.
> >
> > For reference, rte_mempool_get is declared as:
> >
> > static __rte_always_inline int
> > rte_mempool_get(struct rte_mempool *mp, void **obj_p);
> >
> > Signed-off-by: Morten Brørup <mb at smartsharesystems.com>
> > ---
> > meson.build | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/meson.build b/meson.build
> > index 144d1765..f0ac6ab6 100644
> > --- a/meson.build
> > +++ b/meson.build
> > @@ -33,7 +33,7 @@ endforeach
> >
> > # additional project C flags (keep alpha sorted)
> > add_project_arguments('-Wmissing-prototypes', language: 'c')
> > -add_project_arguments('-Wstrict-aliasing=2', language: 'c')
> > +add_project_arguments('-Wstrict-aliasing=3', language: 'c')
> > add_project_arguments('-fstrict-aliasing', language: 'c')
> >
> > # optional project C flags (keep alpha sorted)
>
> This would make sense to replace all (void *) blanket casts with more
> appropriate ones in the same patch.
>
> Also, you could get rid of the now unnecessary intermediate void *data
> variables since we can cast to (void **).
OK, I'll see how much there is, and submit a patch including the code that can be improved as a consequence of this strict-aliasing adjustment.
-Morten
More information about the grout
mailing list