From: Andre Muezerie <andremue@linux.microsoft.com>
To: dev@dpdk.org
Cc: Andre Muezerie <andremue@linux.microsoft.com>
Subject: [PATCH v5 19/20] test: remove use of VLAs for Windows built code in bitset tests
Date: Thu, 7 Nov 2024 16:44:50 -0800 [thread overview]
Message-ID: <1731026691-1529-20-git-send-email-andremue@linux.microsoft.com> (raw)
In-Reply-To: <1731026691-1529-1-git-send-email-andremue@linux.microsoft.com>
1) MSVC does not support VLAs. Use standard fixed C arrays of
maximum size required instead.
2) ../usr/lib/gcc/x86_64-redhat-linux/13/include/emmintrin.h:742:8:
error: array subscript 9 is outside array bounds of 'uint64_t[16]'
{aka 'long unsigned int[16]'} [-Werror=array-bounds=]
3695 742 | *__P = __B;
Compile with -Wno-array-bounds to avoid false positives when
using gcc version 11 or newer (gcc compiler bug/limitation).
Signed-off-by: Andre Muezerie <andremue@linux.microsoft.com>
---
app/test/meson.build | 5 +++
app/test/test_bitset.c | 55 +++++++++++++++++++--------------
app/test/test_reassembly_perf.c | 4 +--
3 files changed, 38 insertions(+), 26 deletions(-)
diff --git a/app/test/meson.build b/app/test/meson.build
index 0f7e11969a..7dedcddb1d 100644
--- a/app/test/meson.build
+++ b/app/test/meson.build
@@ -247,6 +247,11 @@ foreach d:optional_deps
endif
endforeach
+# Bugzilla ID: 678
+if (toolchain == 'gcc' and cc.version().version_compare('>=11.0.0'))
+ cflags += '-Wno-array-bounds'
+endif
+
if cc.has_argument('-Wno-format-truncation')
cflags += '-Wno-format-truncation'
endif
diff --git a/app/test/test_bitset.c b/app/test/test_bitset.c
index 50b8bf0da4..f58c491d8f 100644
--- a/app/test/test_bitset.c
+++ b/app/test/test_bitset.c
@@ -99,11 +99,13 @@ typedef void clear_fun(uint64_t *bitset, size_t bit_num);
typedef void assign_fun(uint64_t *bitset, size_t bit_num, bool value);
typedef void flip_fun(uint64_t *bitset, size_t bit_num);
+#define RAND_SET_MAX_SIZE (1000)
+
static int
test_set_clear_size(test_fun test_fun, set_fun set_fun, clear_fun clear_fun, size_t size)
{
size_t i;
- bool reference[size];
+ bool reference[RAND_SET_MAX_SIZE];
uint64_t *bitset;
rand_bool_ary(reference, size);
@@ -132,7 +134,6 @@ test_set_clear_size(test_fun test_fun, set_fun set_fun, clear_fun clear_fun, siz
}
#define RAND_ITERATIONS (10000)
-#define RAND_SET_MAX_SIZE (1000)
static int
test_set_clear_fun(test_fun test_fun, set_fun set_fun, clear_fun clear_fun)
@@ -168,7 +169,7 @@ test_flip_size(test_fun test_fun, assign_fun assign_fun, flip_fun flip_fun, size
rand_bitset(bitset, size);
for (i = 0; i < size; i++) {
- RTE_BITSET_DECLARE(reference, size);
+ RTE_BITSET_DECLARE(reference, RAND_SET_MAX_SIZE);
rte_bitset_copy(reference, bitset, size);
@@ -288,7 +289,7 @@ static int
test_find_size(size_t size, bool set)
{
uint64_t *bitset;
- bool reference[size];
+ bool reference[RAND_SET_MAX_SIZE];
size_t i;
bitset = alloc_bitset(size);
@@ -388,8 +389,8 @@ record_match(ssize_t match_idx, size_t size, int *calls)
static int
test_foreach_size(ssize_t size, bool may_wrap, bool set)
{
- bool reference[size];
- int calls[size];
+ bool reference[RAND_SET_MAX_SIZE];
+ int calls[RAND_SET_MAX_SIZE];
uint64_t *bitset;
ssize_t i;
ssize_t start_bit;
@@ -633,17 +634,19 @@ test_define(void)
typedef void bitset_op(uint64_t *dst, const uint64_t *a, const uint64_t *b, size_t bit_num);
typedef bool bool_op(bool a, bool b);
+#define LOGIC_MAX_SET_SIZE 200
+
static int
test_logic_op(bitset_op bitset_op, bool_op bool_op)
{
- const size_t size = 1 + rte_rand_max(200);
- RTE_BITSET_DECLARE(bitset_a, size);
- RTE_BITSET_DECLARE(bitset_b, size);
- RTE_BITSET_DECLARE(bitset_d, size);
+ const size_t size = 1 + rte_rand_max(LOGIC_MAX_SET_SIZE);
+ RTE_BITSET_DECLARE(bitset_a, LOGIC_MAX_SET_SIZE);
+ RTE_BITSET_DECLARE(bitset_b, LOGIC_MAX_SET_SIZE);
+ RTE_BITSET_DECLARE(bitset_d, LOGIC_MAX_SET_SIZE);
- bool ary_a[size];
- bool ary_b[size];
- bool ary_d[size];
+ bool ary_a[LOGIC_MAX_SET_SIZE];
+ bool ary_b[LOGIC_MAX_SET_SIZE];
+ bool ary_d[LOGIC_MAX_SET_SIZE];
rand_bool_ary(ary_a, size);
rand_bool_ary(ary_b, size);
@@ -708,14 +711,14 @@ test_complement(void)
for (i = 0; i < RAND_ITERATIONS; i++) {
const size_t size = 1 + rte_rand_max(RAND_SET_MAX_SIZE - 1);
- RTE_BITSET_DECLARE(src, size);
+ RTE_BITSET_DECLARE(src, RAND_SET_MAX_SIZE);
rand_bitset(src, size);
bool bit_idx = rte_rand_max(size);
bool bit_value = rte_bitset_test(src, bit_idx);
- RTE_BITSET_DECLARE(dst, size);
+ RTE_BITSET_DECLARE(dst, RAND_SET_MAX_SIZE);
rte_bitset_complement(dst, src, size);
@@ -726,6 +729,8 @@ test_complement(void)
return TEST_SUCCESS;
}
+#define SHIFT_SET_MAX_SIZE 500
+
static int
test_shift(bool right)
{
@@ -734,12 +739,12 @@ test_shift(bool right)
const char *direction = right ? "right" : "left";
for (i = 0; i < 10000; i++) {
- const int size = 1 + (int)rte_rand_max(500);
+ const int size = 1 + (int)rte_rand_max(SHIFT_SET_MAX_SIZE);
const int shift_count = (int)rte_rand_max(1.5 * size);
int src_idx;
- RTE_BITSET_DECLARE(src, size);
- RTE_BITSET_DECLARE(reference, size);
+ RTE_BITSET_DECLARE(src, SHIFT_SET_MAX_SIZE);
+ RTE_BITSET_DECLARE(reference, SHIFT_SET_MAX_SIZE);
rte_bitset_init(src, size);
rte_bitset_init(reference, size);
@@ -788,12 +793,14 @@ test_shift_left(void)
return test_shift(false);
}
+#define EQUAL_SET_MAX_SIZE 100
+
static int
test_equal(void)
{
- const size_t size = 100;
- RTE_BITSET_DECLARE(bitset_a, size);
- RTE_BITSET_DECLARE(bitset_b, size);
+ const size_t size = EQUAL_SET_MAX_SIZE;
+ RTE_BITSET_DECLARE(bitset_a, EQUAL_SET_MAX_SIZE);
+ RTE_BITSET_DECLARE(bitset_b, EQUAL_SET_MAX_SIZE);
rand_buf(bitset_a, RTE_BITSET_SIZE(size));
rand_buf(bitset_b, RTE_BITSET_SIZE(size));
@@ -821,9 +828,9 @@ test_equal(void)
static int
test_copy(void)
{
- const size_t size = 100;
- RTE_BITSET_DECLARE(bitset_a, size);
- RTE_BITSET_DECLARE(bitset_b, size);
+ const size_t size = EQUAL_SET_MAX_SIZE;
+ RTE_BITSET_DECLARE(bitset_a, EQUAL_SET_MAX_SIZE);
+ RTE_BITSET_DECLARE(bitset_b, EQUAL_SET_MAX_SIZE);
rand_buf(bitset_a, RTE_BITSET_SIZE(size));
rand_buf(bitset_b, RTE_BITSET_SIZE(size));
diff --git a/app/test/test_reassembly_perf.c b/app/test/test_reassembly_perf.c
index 69cf029468..ac225e2b53 100644
--- a/app/test/test_reassembly_perf.c
+++ b/app/test/test_reassembly_perf.c
@@ -577,7 +577,7 @@ ipv4_reassembly_interleaved_flows_perf(uint8_t nb_frags)
for (j = 0; j < 4; j++)
nb_frags += frag_per_flow[i + j];
- struct rte_mbuf *buf_arr[nb_frags];
+ struct rte_mbuf *buf_arr[MAX_FRAGMENTS];
for (j = 0; j < 4; j++) {
join_array(buf_arr, mbufs[i + j], prev,
frag_per_flow[i + j]);
@@ -788,7 +788,7 @@ ipv6_reassembly_interleaved_flows_perf(int8_t nb_frags)
for (j = 0; j < 4; j++)
nb_frags += frag_per_flow[i + j];
- struct rte_mbuf *buf_arr[nb_frags];
+ struct rte_mbuf *buf_arr[MAX_FRAGMENTS];
for (j = 0; j < 4; j++) {
join_array(buf_arr, mbufs[i + j], prev,
frag_per_flow[i + j]);
--
2.34.1
next prev parent reply other threads:[~2024-11-08 0:47 UTC|newest]
Thread overview: 127+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-17 23:41 [PATCH 00/16] remove use of VLAs for Windows built code Tyler Retzlaff
2024-04-17 23:41 ` [PATCH 01/16] eal: include header required for alloca Tyler Retzlaff
2024-04-17 23:41 ` [PATCH 02/16] hash: remove use of VLAs for Windows built code Tyler Retzlaff
2024-04-18 6:45 ` Morten Brørup
2024-04-17 23:41 ` [PATCH 03/16] ethdev: " Tyler Retzlaff
2024-04-17 23:41 ` [PATCH 04/16] gro: " Tyler Retzlaff
2024-04-17 23:41 ` [PATCH 05/16] latencystats: " Tyler Retzlaff
2024-04-17 23:41 ` [PATCH 06/16] lpm: " Tyler Retzlaff
2024-04-17 23:41 ` [PATCH 07/16] rcu: " Tyler Retzlaff
2024-04-17 23:41 ` [PATCH 08/16] app/testpmd: " Tyler Retzlaff
2024-04-17 23:41 ` [PATCH 09/16] test: " Tyler Retzlaff
2024-04-17 23:41 ` [PATCH 10/16] common/idpf: " Tyler Retzlaff
2024-04-17 23:41 ` [PATCH 11/16] net/i40e: " Tyler Retzlaff
2024-04-17 23:41 ` [PATCH 12/16] net/ice: " Tyler Retzlaff
2024-04-17 23:41 ` [PATCH 13/16] net/ixgbe: " Tyler Retzlaff
2024-04-17 23:41 ` [PATCH 14/16] common/mlx5: " Tyler Retzlaff
2024-04-17 23:41 ` [PATCH 15/16] net/mlx5: " Tyler Retzlaff
2024-04-17 23:41 ` [PATCH 16/16] build: enable vla warnings on " Tyler Retzlaff
2024-04-18 6:48 ` Morten Brørup
2024-04-18 15:12 ` Tyler Retzlaff
2024-04-18 15:23 ` Bruce Richardson
2024-04-18 19:22 ` Morten Brørup
2024-04-18 6:49 ` [PATCH 00/16] remove use of VLAs for " Morten Brørup
2024-04-18 12:11 ` Konstantin Ananyev
2024-04-18 15:15 ` Tyler Retzlaff
2024-04-18 15:35 ` Konstantin Ananyev
2024-04-18 20:02 ` [PATCH v2 00/19] remove use of VLAs for Windows Tyler Retzlaff
2024-04-18 20:02 ` [PATCH v2 01/19] eal: include header required for alloca Tyler Retzlaff
2024-04-18 20:02 ` [PATCH v2 02/19] eal/linux: remove use of VLAs Tyler Retzlaff
2024-04-18 20:02 ` [PATCH v2 03/19] eal/common: " Tyler Retzlaff
2024-04-18 20:02 ` [PATCH v2 04/19] ethdev: remove use of VLAs for Windows built code Tyler Retzlaff
2024-04-18 20:02 ` [PATCH v2 05/19] hash: " Tyler Retzlaff
2024-04-18 20:02 ` [PATCH v2 06/19] hash/thash: " Tyler Retzlaff
2024-04-18 20:02 ` [PATCH v2 07/19] rcu: " Tyler Retzlaff
2024-04-18 20:02 ` [PATCH v2 08/19] gro: " Tyler Retzlaff
2024-04-18 20:02 ` [PATCH v2 09/19] latencystats: " Tyler Retzlaff
2024-04-18 20:02 ` [PATCH v2 10/19] lpm: " Tyler Retzlaff
2024-04-18 20:02 ` [PATCH v2 11/19] app/testpmd: " Tyler Retzlaff
2024-04-18 20:02 ` [PATCH v2 12/19] test: " Tyler Retzlaff
2024-04-18 20:02 ` [PATCH v2 13/19] common/idpf: " Tyler Retzlaff
2024-04-18 20:02 ` [PATCH v2 14/19] net/i40e: " Tyler Retzlaff
2024-04-18 20:02 ` [PATCH v2 15/19] net/ice: " Tyler Retzlaff
2024-04-18 20:02 ` [PATCH v2 16/19] net/ixgbe: " Tyler Retzlaff
2024-04-18 20:02 ` [PATCH v2 17/19] common/mlx5: " Tyler Retzlaff
2024-04-18 20:02 ` [PATCH v2 18/19] net/mlx5: " Tyler Retzlaff
2024-04-18 20:02 ` [PATCH v2 19/19] build: enable vla warnings on " Tyler Retzlaff
2024-05-06 18:18 ` [PATCH v3 00/19] remove use of VLAs for Windows Tyler Retzlaff
2024-05-06 18:18 ` [PATCH v3 01/19] eal: include header required for alloca Tyler Retzlaff
2024-05-06 18:18 ` [PATCH v3 02/19] eal/linux: remove use of VLAs Tyler Retzlaff
2024-05-06 18:18 ` [PATCH v3 03/19] eal/common: " Tyler Retzlaff
2024-05-07 0:42 ` Stephen Hemminger
2024-05-06 18:18 ` [PATCH v3 04/19] ethdev: remove use of VLAs for Windows built code Tyler Retzlaff
2024-05-06 18:18 ` [PATCH v3 05/19] hash: " Tyler Retzlaff
2024-05-06 18:18 ` [PATCH v3 06/19] hash/thash: " Tyler Retzlaff
2024-05-06 18:18 ` [PATCH v3 07/19] rcu: " Tyler Retzlaff
2024-05-06 18:18 ` [PATCH v3 08/19] gro: " Tyler Retzlaff
2024-05-07 0:47 ` Stephen Hemminger
2024-05-06 18:18 ` [PATCH v3 09/19] latencystats: " Tyler Retzlaff
2024-05-07 0:47 ` Stephen Hemminger
2024-05-06 18:18 ` [PATCH v3 10/19] lpm: " Tyler Retzlaff
2024-05-06 18:18 ` [PATCH v3 11/19] app/testpmd: " Tyler Retzlaff
2024-05-06 18:18 ` [PATCH v3 12/19] test: " Tyler Retzlaff
2024-05-06 18:18 ` [PATCH v3 13/19] common/idpf: " Tyler Retzlaff
2024-05-06 18:18 ` [PATCH v3 14/19] net/i40e: " Tyler Retzlaff
2024-05-06 18:18 ` [PATCH v3 15/19] net/ice: " Tyler Retzlaff
2024-05-06 18:18 ` [PATCH v3 16/19] net/ixgbe: " Tyler Retzlaff
2024-05-06 18:18 ` [PATCH v3 17/19] common/mlx5: " Tyler Retzlaff
2024-05-06 18:18 ` [PATCH v3 18/19] net/mlx5: " Tyler Retzlaff
2024-05-06 18:18 ` [PATCH v3 19/19] build: enable vla warnings on " Tyler Retzlaff
2024-05-07 2:53 ` [PATCH 1/2] lpm: remove unnecessary temporary VLA Stephen Hemminger
2024-05-07 2:53 ` [PATCH 2/2] latencystats: replace use of VLA Stephen Hemminger
2024-07-09 8:06 ` David Marchand
2024-05-07 7:51 ` [PATCH 1/2] lpm: remove unnecessary temporary VLA Bruce Richardson
2024-07-09 8:26 ` [PATCH v3 00/19] remove use of VLAs for Windows David Marchand
2024-10-07 17:15 ` [PATCH 00/16] remove use of VLAs for Windows built code Stephen Hemminger
2024-11-01 18:06 ` Andre Muezerie
2024-11-05 3:15 ` [PATCH v4 00/19] remove use of VLAs for Windows Andre Muezerie
2024-11-05 3:15 ` [PATCH v4 01/19] eal: include header required for alloca Andre Muezerie
2024-11-05 3:15 ` [PATCH v4 02/19] eal/linux: remove use of VLAs Andre Muezerie
2024-11-05 8:19 ` David Marchand
2024-11-06 2:02 ` Andre Muezerie
2024-11-08 13:44 ` Konstantin Ananyev
2024-11-05 3:15 ` [PATCH v4 03/19] eal/common: " Andre Muezerie
2024-11-05 3:15 ` [PATCH v4 04/19] ethdev: remove use of VLAs for Windows built code Andre Muezerie
2024-11-05 3:15 ` [PATCH v4 05/19] hash: " Andre Muezerie
2024-11-05 3:15 ` [PATCH v4 06/19] hash/thash: remove use of VLAs for Windows built Andre Muezerie
2024-11-05 3:15 ` [PATCH v4 07/19] rcu: remove use of VLAs for Windows built code Andre Muezerie
2024-11-05 3:15 ` [PATCH v4 08/19] gro: " Andre Muezerie
2024-11-05 3:15 ` [PATCH v4 09/19] app/testpmd: remove use of VLAs for Windows built Andre Muezerie
2024-11-05 3:15 ` [PATCH v4 10/19] test: remove use of VLAs for Windows built code Andre Muezerie
2024-11-05 3:15 ` [PATCH v4 11/19] common/idpf: " Andre Muezerie
2024-11-05 3:15 ` [PATCH v4 12/19] net/i40e: " Andre Muezerie
2024-11-05 3:15 ` [PATCH v4 13/19] net/ice: " Andre Muezerie
2024-11-05 3:15 ` [PATCH v4 14/19] net/ixgbe: " Andre Muezerie
2024-11-05 3:15 ` [PATCH v4 15/19] common/mlx5: " Andre Muezerie
2024-11-05 3:15 ` [PATCH v4 16/19] net/mlx5: " Andre Muezerie
2024-11-05 3:15 ` [PATCH v4 17/19] build: enable vla warnings on " Andre Muezerie
2024-11-05 3:15 ` [PATCH v4 18/19] test: remove use of VLAs for Windows built code in bitset tests Andre Muezerie
2024-11-05 8:32 ` David Marchand
2024-11-06 2:06 ` Andre Muezerie
2024-11-05 3:15 ` [PATCH v4 19/19] app/testpmd: remove use of VLAs for Windows built code in shared_rxq_fwd Andre Muezerie
2024-11-05 9:37 ` [PATCH v4 00/19] remove use of VLAs for Windows Konstantin Ananyev
2024-11-08 0:44 ` [PATCH v5 00/20] " Andre Muezerie
2024-11-08 0:44 ` [PATCH v5 01/20] eal: include header required for alloca Andre Muezerie
2024-11-08 0:44 ` [PATCH v5 02/20] eal/linux: remove use of VLAs Andre Muezerie
2024-11-08 0:44 ` [PATCH v5 03/20] eal/common: " Andre Muezerie
2024-11-08 0:44 ` [PATCH v5 04/20] ethdev: remove use of VLAs for Windows built code Andre Muezerie
2024-11-08 0:44 ` [PATCH v5 05/20] hash: " Andre Muezerie
2024-11-08 0:44 ` [PATCH v5 06/20] hash/thash: remove use of VLAs for Windows built Andre Muezerie
2024-11-08 0:44 ` [PATCH v5 07/20] rcu: remove use of VLAs for Windows built code Andre Muezerie
2024-11-08 0:44 ` [PATCH v5 08/20] net/ice: " Andre Muezerie
2024-11-08 8:51 ` Bruce Richardson
2024-11-08 10:18 ` Konstantin Ananyev
2024-11-08 0:44 ` [PATCH v5 09/20] gro: remove use of VLAs Andre Muezerie
2024-11-08 0:44 ` [PATCH v5 10/20] net/ixgbe: " Andre Muezerie
2024-11-08 0:44 ` [PATCH v5 11/20] net/ice: " Andre Muezerie
2024-11-08 0:44 ` [PATCH v5 12/20] app/testpmd: remove use of VLAs for Windows built Andre Muezerie
2024-11-08 0:44 ` [PATCH v5 13/20] test: remove use of VLAs for Windows built code Andre Muezerie
2024-11-08 0:44 ` [PATCH v5 14/20] common/idpf: " Andre Muezerie
2024-11-08 8:47 ` Bruce Richardson
2024-11-08 0:44 ` [PATCH v5 15/20] net/i40e: " Andre Muezerie
2024-11-08 8:45 ` Bruce Richardson
2024-11-08 0:44 ` [PATCH v5 16/20] common/mlx5: " Andre Muezerie
2024-11-08 0:44 ` [PATCH v5 17/20] net/mlx5: " Andre Muezerie
2024-11-08 0:44 ` [PATCH v5 18/20] build: enable vla warnings on " Andre Muezerie
2024-11-08 0:44 ` Andre Muezerie [this message]
2024-11-08 0:44 ` [PATCH v5 20/20] app/testpmd: remove use of VLAs for Windows built code in shared_rxq_fwd Andre Muezerie
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1731026691-1529-20-git-send-email-andremue@linux.microsoft.com \
--to=andremue@linux.microsoft.com \
--cc=dev@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).