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