diff options
author | Erich Keane <erich.keane@intel.com> | 2021-11-05 06:25:34 -0700 |
---|---|---|
committer | Erich Keane <erich.keane@intel.com> | 2021-11-11 11:11:16 -0800 |
commit | 9deab60ae710f8c4cc810cd680edfb64c803f42d (patch) | |
tree | 95b99e10e7db68dd224fcd6f75337dcbc7c14ef2 /clang/lib/CodeGen/CodeGenModule.h | |
parent | 42102bce98e527f994a7bc68b2255d9e0462f6eb (diff) | |
download | llvm-9deab60ae710f8c4cc810cd680edfb64c803f42d.zip llvm-9deab60ae710f8c4cc810cd680edfb64c803f42d.tar.gz llvm-9deab60ae710f8c4cc810cd680edfb64c803f42d.tar.bz2 |
Implement target_clones multiversioning
As discussed here: https://lwn.net/Articles/691932/
GCC6.0 adds target_clones multiversioning. This functionality is
an odd cross between the cpu_dispatch and 'target' MV, but is compatible
with neither.
This attribute allows you to list all options, then emits a separately
optimized version of each function per-option (similar to the
cpu_specific attribute). It automatically generates a resolver, just
like the other two.
The mangling however, is... ODD to say the least. The mangling format
is:
<normal_mangling>.<option string>.<option ordinal>.
Differential Revision:https://reviews.llvm.org/D51650
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.h')
-rw-r--r-- | clang/lib/CodeGen/CodeGenModule.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CodeGenModule.h b/clang/lib/CodeGen/CodeGenModule.h index fbed223..e1c7f48 100644 --- a/clang/lib/CodeGen/CodeGenModule.h +++ b/clang/lib/CodeGen/CodeGenModule.h @@ -1500,6 +1500,7 @@ private: void EmitAliasDefinition(GlobalDecl GD); void emitIFuncDefinition(GlobalDecl GD); void emitCPUDispatchDefinition(GlobalDecl GD); + void EmitTargetClonesResolver(GlobalDecl GD); void EmitObjCPropertyImplementations(const ObjCImplementationDecl *D); void EmitObjCIvarInitializations(ObjCImplementationDecl *D); |