• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/contrib/llvm-project/llvm/lib/Linker/

Lines Matching defs:SGV

448   GlobalValue *copyGlobalValueProto(const GlobalValue *SGV, bool ForDefinition);
481 /// Given the GlobaValue \p SGV in the source module, and the matching
482 /// GlobalValue \p DGV (if any), return true if the linker will pull \p SGV
486 bool shouldLink(GlobalValue *DGV, GlobalValue &SGV);
569 Value *GlobalValueMaterializer::materialize(Value *SGV) {
570 return TheIRLinker.materialize(SGV, false);
573 Value *LocalValueMaterializer::materialize(Value *SGV) {
574 return TheIRLinker.materialize(SGV, true);
578 auto *SGV = dyn_cast<GlobalValue>(V);
579 if (!SGV)
582 Expected<Constant *> NewProto = linkGlobalValueProto(SGV, ForIndirectSymbol);
615 if (ForIndirectSymbol && ValueMap.lookup(SGV) == New)
618 if (ForIndirectSymbol || shouldLink(New, *SGV))
619 setError(linkGlobalValueBody(*New, *SGV));
689 GlobalValue *IRLinker::copyGlobalValueProto(const GlobalValue *SGV,
692 if (auto *SGVar = dyn_cast<GlobalVariable>(SGV)) {
694 } else if (auto *SF = dyn_cast<Function>(SGV)) {
698 NewGV = copyGlobalIndirectSymbolProto(cast<GlobalIndirectSymbol>(SGV));
699 else if (SGV->getValueType()->isFunctionTy())
701 Function::Create(cast<FunctionType>(TypeMap.get(SGV->getValueType())),
702 GlobalValue::ExternalLinkage, SGV->getAddressSpace(),
703 SGV->getName(), &DstM);
706 new GlobalVariable(DstM, TypeMap.get(SGV->getValueType()),
708 /*init*/ nullptr, SGV->getName(),
710 SGV->getThreadLocalMode(), SGV->getAddressSpace());
714 NewGV->setLinkage(SGV->getLinkage());
715 else if (SGV->hasExternalWeakLinkage())
720 if (isa<GlobalVariable>(SGV) || SGV->isDeclaration())
721 NewGO->copyMetadata(cast<GlobalObject>(SGV), 0);
749 for (GlobalValue &SGV : SrcM->globals()) {
750 GlobalValue *DGV = getLinkedToGlobal(&SGV);
754 if (!DGV->hasAppendingLinkage() || !SGV.hasAppendingLinkage()) {
755 TypeMap.addTypeMapping(DGV->getType(), SGV.getType());
761 ArrayType *SAT = cast<ArrayType>(SGV.getValueType());
765 for (GlobalValue &SGV : *SrcM)
766 if (GlobalValue *DGV = getLinkedToGlobal(&SGV)) {
767 if (DGV->getType() == SGV.getType()) {
768 // If the types of DGV and SGV are the same, it means that DGV is from
776 TypeMap.addTypeMapping(DGV->getType(), SGV.getType());
779 for (GlobalValue &SGV : SrcM->aliases())
780 if (GlobalValue *DGV = getLinkedToGlobal(&SGV))
781 TypeMap.addTypeMapping(DGV->getType(), SGV.getType());
947 bool IRLinker::shouldLink(GlobalValue *DGV, GlobalValue &SGV) {
948 if (ValuesToLink.count(&SGV) || SGV.hasLocalLinkage())
954 if (SGV.isDeclaration() || DoneLinkingBodies)
960 AddLazyFor(SGV, [this, &LazilyAdded](GlobalValue &GV) {
967 Expected<Constant *> IRLinker::linkGlobalValueProto(GlobalValue *SGV,
969 GlobalValue *DGV = getLinkedToGlobal(SGV);
971 bool ShouldLink = shouldLink(DGV, *SGV);
975 auto I = ValueMap.find(SGV);
979 I = IndirectSymbolValueMap.find(SGV);
988 assert(!DGV || SGV->hasAppendingLinkage() == DGV->hasAppendingLinkage());
989 if (SGV->hasAppendingLinkage())
991 cast<GlobalVariable>(SGV));
1003 NewGV = copyGlobalValueProto(SGV, ShouldLink || ForIndirectSymbol);
1005 forceRenaming(NewGV, SGV->getName());
1016 if (const Comdat *SC = SGV->getComdat()) {
1031 // containing a GV from the source module, in which case SGV will be
1034 if (DGV && NewGV != SGV) {
1036 NewGV, TypeMap.get(SGV->getType()));