Add another assert to cpu-dispatch emission to help track down a tough
authorErich Keane <erich.keane@intel.com>
Thu, 13 Jan 2022 14:52:58 +0000 (06:52 -0800)
committerErich Keane <erich.keane@intel.com>
Thu, 13 Jan 2022 14:54:08 +0000 (06:54 -0800)
to repro error.

As mentioned yesterday, I've got a problem that I can only reproduce on
Godbolt (none of the build configs on my local machine!), so this is at
least somewhat usable until I figure out a cause.

clang/lib/CodeGen/CodeGenModule.cpp

index d824cb3..42dfce3 100644 (file)
@@ -3479,6 +3479,7 @@ void CodeGenModule::emitMultiVersionFunctions() {
 void CodeGenModule::emitCPUDispatchDefinition(GlobalDecl GD) {
   const auto *FD = cast<FunctionDecl>(GD.getDecl());
   assert(FD && "Not a FunctionDecl?");
+  assert(FD->isCPUDispatchMultiVersion() && "Not a multiversion function?");
   const auto *DD = FD->getAttr<CPUDispatchAttr>();
   assert(DD && "Not a cpu_dispatch Function?");
   llvm::Type *DeclTy = getTypes().ConvertType(FD->getType());
@@ -3498,7 +3499,7 @@ void CodeGenModule::emitCPUDispatchDefinition(GlobalDecl GD) {
                                Context.getTargetAddressSpace(FD->getType())),
         false);
     assert(ResolverName.endswith(".resolver") &&
-           "CPUDispatch IFunc resolver doesn't end with .resolver?");
+           "CPUDispatch IFunc resolver doesn't end with .resolver??");
   }
   else {
     ResolverType = DeclTy;