30/04/2020 16:43, Ananyev, Konstantin: > > Hi Honnappa, > > > Hi Konstantin, > > I like the way the tests are organized and it looks good. > > > > I am just wondering about the way it is being tested here. The intent to > > write the test cases the way they are currently is to mimic how the > > APIs would be used mostly. IMO, the APIs would be used with a constant > > value for element size so that the compiler will throw away the > > unwanted code (in the functions where the actual copy is being done). > > > > With your method here, it looks to me like all the branches in the copy > > functions are kept and the branch decisions are done at run time. > > Is my understanding correct? > > You mean branching on esize[] values? > Actually from what I've seen that happens for both cases: > before and after the patch (gcc 7.3 -O3). > > Main intention in my changes was to avoid using > test_ring_enqueue/test_ring_dequeue, > as it seems too many branches here and it takes compiler a lot of effort to > resolve all > of them at compile time. > So I replaced it with array of function pointers (test_enqdeq_impl[]) and > iterating over it. > That way compiler knows straightway which function to use.
In case we choose this solution, please make a v2 including such explanations.