ilinpv added a comment.

In D127812#4030881 <https://reviews.llvm.org/D127812#4030881>, @smeenai wrote:

> We're not actually using multi-versioning anywhere, but we're still paying 
> the size cost for it as a result. Would we consider moving the newly added 
> functions into their own file (or perhaps moving the outlined atomics 
> functions into a different file), so that you can use outlined atomics 
> without also paying the size cost of function multiversioning if you don't 
> need it?

Function multiversioning expects compiler-rt has __aarch64_cpu_features, it 
will be broken if compiler-rt miss that ( 
clang/lib/Driver/ToolChains/Clang.cpp:7231 ). I believe function 
multiversioning will be used in Android as outline atomics already did.

> I also had a couple of general questions, since I think I'm missing something 
> obvious:
>
> - How come we need both `init_cpu_features` and `init_cpu_features_resolver`? 
> It seems like we're codegenning calls to the latter where needed, so I'm not 
> sure what the former is adding on top.
> - From what I can see, we're codegenning calls to 
> `init_cpu_features_resolver` without any arguments, but the actual definition 
> of that function has two arguments. How does that work?

hwcaps are ABI specified arguments of ifunc resolver. The constructor 
init_cpu_features calls getauxval to initialize hwcaps and then pass them 
explicitly to init_cpu_features_resolver. If resolver called before constructor 
we get init_cpu_features_resolver hwcap and hwcap2 as arguments from dynamic 
loader.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D127812

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

Reply via email to