erichkeane added a comment.

In D120266#3341378 <https://reviews.llvm.org/D120266#3341378>, @ibookstein 
wrote:

> Yeah, that's what happens with this patch; Reference binds against an 
> `llvm::Function` declaration, linker resolves it to the actual ifunc in 
> another translation unit and therefore emits IFUNC relocation.
>
> Thinking about it more, this is inelegant. I would have liked the reference 
> against the `cpu_specific` to bind against a plain "FOO" function declaration 
> and not "FOO.ifunc", and 'upgrade' it later once a cpu_dispatch is 
> encountered.
> To my understanding, this is actually the reason 
> https://reviews.llvm.org/D67058 added the plain-name alias.
>
> I'll try to see if I can rework that.

I was actually in favor of that... The problem is that the cpu-dispatch in a 
different TU should be what is found, and there is value to having the linker 
failure in that case.  I wouldn't want something like:

TU1:

  [[cpu_specific(generic)]]
  void foo(){}
  void caller() {
  foo();
  }

TU2:

  void foo() {
  some weirdo generic impl
  }

to work in this case.

The point of that other review was the inverse: someone who DIDN'T know about 
the multiversioning could get it.  We don't want this (not getting 
multiversioning even though you expect it!) to work.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D120266

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to