https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83411

--- Comment #4 from Martin Liška <marxin at gcc dot gnu.org> ---
Thank you Hannes for the report and also the nice blog post.
I must agree that's sort of limitation, but I don't agree that it's limiting
much:

1) Note that dispatch happens just once when an executable is started, dynamic
linker resolves all IFUNC indirect calls. Since that you only pay for the
indirect call. However as the target is constant, modern CPUs can predict that
very well.

2) That said it's about finding reasonable big enough code that will be entered
via MV. In your example you selected a function that does only popcount, which
is extremely small and you pay for call overhead. So finding a point like your
'loop' and using flatten attribute can guarantee the call-chain is fully
optimized. Would be interesting to come up with more examples from real
applications.

Anyway, I'm leaving for now this PR and will fix PR82625. It's obvious that
user should pay for entering of MV world just once.

Thanks.

Reply via email to