On Thu, 2024-02-08 at 16:05 +0100, Jose E. Marchesi wrote: > > On Thu, 2024-02-08 at 13:55 +0100, Jose E. Marchesi wrote: > > [...] > > > > > However, it would be good if some clang wizard could confirm what > > > impact, if any, #pragma unroll (aka #pragma clang loop unroll(enabled)) > > > has over -O2, before ditching these pragmas from the selftests. > > > > I compiled sefltests both with and without this patch, > > there are no differences in disassembly of generated BPF object files. > > (using current clang main). > > > > [...] > > Hmm, wouldn't that mean that the loops in profiler.inc.h never get > unrolled regardless of optimization level or pragma? (profiler2.c) > No, the generated code is different between profiler{1,2,3}, e.g.: $ llvm-objdump -d before/profiler1.bpf.o | wc -l 5356 $ llvm-objdump -d before/profiler2.bpf.o | wc -l 2329 $ llvm-objdump -d before/profiler3.bpf.o | wc -l 1915 What I meant, is that generated code for before/profiler1.bpf.o and after/profiler1.bpf.o is identical, etc.