[PATCH] D67058: [clang][CodeGen] Add alias for cpu_dispatch function with IFunc & Fix resolver linkage type
Sr.Zhang via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Sep 5 19:45:29 PDT 2019
zsrkmyn added inline comments.
================
Comment at: clang/lib/CodeGen/CodeGenModule.cpp:3002
false);
llvm::Constant *Resolver = GetOrCreateLLVMFunction(
MangledName + ".resolver", ResolverType, GlobalDecl{},
----------------
erichkeane wrote:
> This Resolver should have the same linkage as below.
Actually, I wanted to set linkage here at the first time, but failed. When compiling code with cpu_specific but no cpu_dispatch, we cannot set it as LinkOnceODR or WeakODR. E.g.:
```
$ cat specific_only.c
__declspec(cpu_specific(pentium_iii))
int foo(void) { return 0; }
int usage() { return foo(); }
$ clang -fdeclspec specific_only.c
Global is external, but doesn't have external or weak linkage!
i32 ()* ()* @foo.resolver
fatal error: error in backend: Broken module found, compilation aborted!
```
This is found by lit test test/CodeGen/attr-cpuspecific.c, in which 'SingleVersion()' doesn't have a cpu_dispatch declaration.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D67058/new/
https://reviews.llvm.org/D67058
More information about the cfe-commits
mailing list