================ @@ -3361,6 +3382,194 @@ void PPCAIXAsmPrinter::emitModuleCommandLines(Module &M) { OutStreamer->emitXCOFFCInfoSym(".GCC.command.line", RSOS.str()); } +static bool TOCRestoreNeeded(const GlobalIFunc &GI) { + auto IsLocalFunc = [&](const Value *V) { + if (!isa<Function>(V)) + return false; + auto *F = cast<Function>(V); + + // static functions are local + if (F->getLinkage() == GlobalValue::InternalLinkage) + return true; + // for now, declarations we treat as potentially non-local + if (F->isDeclarationForLinker()) + return false; + // hidden visibility definitions cannot be preempted, so treat as local. + if (F->getVisibility() == GlobalValue::HiddenVisibility) + return true; + + return false; + }; + + if (!IFuncLocal.empty()) { ---------------- w2yehia wrote:
it's dangerous to have this cl::opt, better to remove it. To avoid allowing users shooting themselves in the foot. Also for FMV, the compiler generates the resolver and the versioned functions, which will be satisfied by the conditions in this function (i.e. be dso local). https://github.com/llvm/llvm-project/pull/153049 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits