aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/CodeGen/CodeGenModule.h
diff options
context:
space:
mode:
authorErich Keane <erich.keane@intel.com>2021-11-05 06:25:34 -0700
committerErich Keane <erich.keane@intel.com>2021-11-11 11:11:16 -0800
commit9deab60ae710f8c4cc810cd680edfb64c803f42d (patch)
tree95b99e10e7db68dd224fcd6f75337dcbc7c14ef2 /clang/lib/CodeGen/CodeGenModule.h
parent42102bce98e527f994a7bc68b2255d9e0462f6eb (diff)
downloadllvm-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.h1
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);