[dpdk-dev] [PATCH v2] node: fix arm64 build issue for older gcc

Jerin Jacob jerinjacobk at gmail.com
Wed May 13 14:36:18 CEST 2020


On Wed, May 13, 2020 at 5:36 PM Nithin Dabilpuram
<ndabilpuram at marvell.com> wrote:
>
> Older GCC(~4) complains about uninitialized 'dip'
> var though all the lanes of the vec register are set.
> Hence this patch explicitly initializes vec register
> to fix the issue.
>
> In file included from ip4_lookup.c:34:0:
> ip4_lookup_neon.h: n function ‘ip4_lookup_node_process’: \
> ip4_lookup_neon.h:25:12: error: ‘dip’ may be used uninitialized in \
>                                 this function [-Werror=maybe-uninitialized]
>   int32x4_t dip;
>             ^
>
> Fixes: 16df6a2c6671 ("node: add IPv4 lookup for arm64")
>

Reported-by: David Marchand <david.marchand at redhat.com>

> Signed-off-by: Nithin Dabilpuram <ndabilpuram at marvell.com>
> Reviewed-by: Ruifeng Wang <ruifeng.wang at arm.com>

It is a false positive, all the lines are updated by the c code.
Just to make the old compiler to happy we need to add unnecessary
additional instruction.
Looks like there is no other clean way to suppress the warning.

Reviewed-by: Jerin Jacob <jerinj at marvell.com>


> ---
> v2:
> - Add error in commit msg.
>
>  lib/librte_node/ip4_lookup_neon.h | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/lib/librte_node/ip4_lookup_neon.h b/lib/librte_node/ip4_lookup_neon.h
> index bb3150f..dd21cb2 100644
> --- a/lib/librte_node/ip4_lookup_neon.h
> +++ b/lib/librte_node/ip4_lookup_neon.h
> @@ -45,6 +45,7 @@ ip4_lookup_node_process(struct rte_graph *graph, struct rte_node *node,
>                 rte_prefetch0(rte_pktmbuf_mtod_offset(pkts[i], void *,
>                                                 sizeof(struct rte_ether_hdr)));
>
> +       dip = vdupq_n_s32(0);
>         /* Get stream for the speculated next node */
>         to_next = rte_node_next_stream_get(graph, node, next_index, nb_objs);
>         while (n_left_from >= 4) {
> --
> 2.8.4
>


More information about the dev mailing list