[PATCH] D77484: [Vector] Pass VectLib to LTO backend so TLI build correct vector function list

Wenlei He via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Apr 7 00:30:14 PDT 2020


wenlei added a comment.

In D77484#1965976 <https://reviews.llvm.org/D77484#1965976>, @tejohnson wrote:

> In D77484#1965629 <https://reviews.llvm.org/D77484#1965629>, @wenlei wrote:
>
> > > Ok then it does sound like these could be handled on a per-function basis, similar to how -fno-builtin* are handled. I.e. a function attribute to indicate the veclib, which would then be naturally preserved during LTO even after merging/importing across modules. Similar to how -fno-builtin* are handled, these would need to be examined when inlining (see the new TargetLibraryInfo::areInlineCompatible). Presumably we would want to block inlining between functions with different veclib attributes in the LTO backends.
> >
> > @tejohnson, we could do that. But then on the other hand, technically almost everything for module or whole program can be passed as a function attribute, and yet we have switches passed to backend for many of those things. Wondering what's the convention or rule (if there's one) we want to follow? Specifically, if we only use function attributes for stuff that's indeed going to be different between functions, then vectlib isn't in that category; or if we use function attributes for the greatest flexibility whenever we can, then many other things should be function attributes too (though it's essentially duplication in IR, and probably not the most efficient).
>
>
> Passing the option through the driver to the linker is the legacy approach. But it isn't really scalable and has other issues, so we've been moving towards having all the necessary info in the IR itself. For one, this helps deal with cases where different options were specified for different source files. For another, it keeps the same build behavior with LTO and non-LTO. I.e. for this option, if the build system specified it for the cc compiles but not the links, it would work for O2 <https://reviews.llvm.org/owners/package/2/> but not for LTO if it had to be propagated via the linker. It would work for LTO if it was propagated via the IR.


Makes sense, thanks for clarification. I created D77632 <https://reviews.llvm.org/D77632> to make vect lib setting a per-function attribute.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D77484/new/

https://reviews.llvm.org/D77484





More information about the cfe-commits mailing list