[clang] [FMV] Emit the resolver along with the default version definition. (PR #84405)
    Alexandros Lamprineas via cfe-commits 
    cfe-commits at lists.llvm.org
       
    Fri Mar 15 07:45:54 PDT 2024
    
    
  
================
@@ -4347,6 +4362,19 @@ void CodeGenModule::emitCPUDispatchDefinition(GlobalDecl GD) {
   }
 }
 
+/// Adds a declaration to the list of multi version functions if not present.
+void CodeGenModule::AddDeferredMultiVersionResolverToEmit(GlobalDecl GD) {
+  const auto *FD = cast<FunctionDecl>(GD.getDecl());
+  assert(FD && "Not a FunctionDecl?");
+
+  if (FD->isTargetVersionMultiVersion()) {
+    StringRef NamePrefix = getMangledName(GD).split('.').first;
----------------
labrinea wrote:
As far as I can tell `target_version` and `asm` cannot be combined according to clang's semantic checker, therefore a function declaration which has been renamed via `asm` cannot reach `AddDeferredMultiVersionResolverToEmit()`. In any case I will use `rsplit()` instead.
https://github.com/llvm/llvm-project/pull/84405
    
    
More information about the cfe-commits
mailing list