lkml.org 
[lkml]   [2019]   [Oct]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.3 50/71] selftests/bpf: adjust strobemeta loop to satisfy latest clang
    Date
    From: Andrii Nakryiko <andriin@fb.com>

    [ Upstream commit 4670d68b9254710fdeaf794cad54d8b2c9929e0a ]

    Some recent changes in latest Clang started causing the following
    warning when unrolling strobemeta test case main loop:

    progs/strobemeta.h:416:2: warning: loop not unrolled: the optimizer was
    unable to perform the requested transformation; the transformation might
    be disabled or specified as part of an unsupported transformation
    ordering [-Wpass-failed=transform-warning]

    This patch simplifies loop's exit condition to depend only on constant
    max iteration number (STROBE_MAX_MAP_ENTRIES), while moving early
    termination logic inside the loop body. The changes are equivalent from
    program logic standpoint, but fixes the warning. It also appears to
    improve generated BPF code, as it fixes previously failing non-unrolled
    strobemeta test cases.

    Cc: Alexei Starovoitov <ast@fb.com>
    Signed-off-by: Andrii Nakryiko <andriin@fb.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    tools/testing/selftests/bpf/progs/strobemeta.h | 5 ++++-
    1 file changed, 4 insertions(+), 1 deletion(-)

    diff --git a/tools/testing/selftests/bpf/progs/strobemeta.h b/tools/testing/selftests/bpf/progs/strobemeta.h
    index 8a399bdfd9203..067eb625d01c5 100644
    --- a/tools/testing/selftests/bpf/progs/strobemeta.h
    +++ b/tools/testing/selftests/bpf/progs/strobemeta.h
    @@ -413,7 +413,10 @@ static __always_inline void *read_map_var(struct strobemeta_cfg *cfg,
    #else
    #pragma unroll
    #endif
    - for (int i = 0; i < STROBE_MAX_MAP_ENTRIES && i < map.cnt; ++i) {
    + for (int i = 0; i < STROBE_MAX_MAP_ENTRIES; ++i) {
    + if (i >= map.cnt)
    + break;
    +
    descr->key_lens[i] = 0;
    len = bpf_probe_read_str(payload, STROBE_MAX_STR_LEN,
    map.entries[i].key);
    --
    2.20.1
    \
     
     \ /
      Last update: 2019-10-01 19:01    [W:6.893 / U:0.044 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site