Lines Matching refs:SGV
454 GlobalValue *copyGlobalValueProto(const GlobalValue *SGV, bool ForDefinition);
500 bool shouldLink(GlobalValue *DGV, GlobalValue &SGV);
520 GlobalValue *copyIndirectSymbolProto(const GlobalValue *SGV);
585 Value *GlobalValueMaterializer::materialize(Value *SGV) { in materialize() argument
586 return TheIRLinker.materialize(SGV, false); in materialize()
589 Value *LocalValueMaterializer::materialize(Value *SGV) { in materialize() argument
590 return TheIRLinker.materialize(SGV, true); in materialize()
594 auto *SGV = dyn_cast<GlobalValue>(V); in materialize() local
595 if (!SGV) in materialize()
602 if (SGV->getParent() != &DstM && SGV->getParent() != SrcM.get()) in materialize()
605 Expected<Constant *> NewProto = linkGlobalValueProto(SGV, ForIndirectSymbol); in materialize()
642 if ((ForIndirectSymbol && ValueMap.lookup(SGV) == New) || in materialize()
643 (!ForIndirectSymbol && IndirectSymbolValueMap.lookup(SGV) == New)) in materialize()
646 if (ForIndirectSymbol || shouldLink(New, *SGV)) in materialize()
647 setError(linkGlobalValueBody(*New, *SGV)); in materialize()
704 GlobalValue *IRLinker::copyIndirectSymbolProto(const GlobalValue *SGV) { in copyIndirectSymbolProto() argument
707 auto *Ty = TypeMap.get(SGV->getValueType()); in copyIndirectSymbolProto()
709 if (auto *GA = dyn_cast<GlobalAlias>(SGV)) { in copyIndirectSymbolProto()
710 auto *DGA = GlobalAlias::create(Ty, SGV->getAddressSpace(), in copyIndirectSymbolProto()
712 SGV->getName(), &DstM); in copyIndirectSymbolProto()
717 if (auto *GI = dyn_cast<GlobalIFunc>(SGV)) { in copyIndirectSymbolProto()
718 auto *DGI = GlobalIFunc::create(Ty, SGV->getAddressSpace(), in copyIndirectSymbolProto()
720 SGV->getName(), nullptr, &DstM); in copyIndirectSymbolProto()
728 GlobalValue *IRLinker::copyGlobalValueProto(const GlobalValue *SGV, in copyGlobalValueProto() argument
731 if (auto *SGVar = dyn_cast<GlobalVariable>(SGV)) { in copyGlobalValueProto()
733 } else if (auto *SF = dyn_cast<Function>(SGV)) { in copyGlobalValueProto()
737 NewGV = copyIndirectSymbolProto(SGV); in copyGlobalValueProto()
738 else if (SGV->getValueType()->isFunctionTy()) in copyGlobalValueProto()
740 Function::Create(cast<FunctionType>(TypeMap.get(SGV->getValueType())), in copyGlobalValueProto()
741 GlobalValue::ExternalLinkage, SGV->getAddressSpace(), in copyGlobalValueProto()
742 SGV->getName(), &DstM); in copyGlobalValueProto()
745 new GlobalVariable(DstM, TypeMap.get(SGV->getValueType()), in copyGlobalValueProto()
747 /*init*/ nullptr, SGV->getName(), in copyGlobalValueProto()
749 SGV->getThreadLocalMode(), SGV->getAddressSpace()); in copyGlobalValueProto()
753 NewGV->setLinkage(SGV->getLinkage()); in copyGlobalValueProto()
754 else if (SGV->hasExternalWeakLinkage()) in copyGlobalValueProto()
759 if (isa<GlobalVariable>(SGV) || SGV->isDeclaration()) { in copyGlobalValueProto()
760 NewGO->copyMetadata(cast<GlobalObject>(SGV), 0); in copyGlobalValueProto()
761 if (SGV->isDeclaration() && NewGO->hasMetadata()) in copyGlobalValueProto()
791 for (GlobalValue &SGV : SrcM->globals()) { in computeTypeMapping()
792 GlobalValue *DGV = getLinkedToGlobal(&SGV); in computeTypeMapping()
796 if (!DGV->hasAppendingLinkage() || !SGV.hasAppendingLinkage()) { in computeTypeMapping()
797 TypeMap.addTypeMapping(DGV->getType(), SGV.getType()); in computeTypeMapping()
803 ArrayType *SAT = cast<ArrayType>(SGV.getValueType()); in computeTypeMapping()
807 for (GlobalValue &SGV : *SrcM) in computeTypeMapping()
808 if (GlobalValue *DGV = getLinkedToGlobal(&SGV)) { in computeTypeMapping()
809 if (DGV->getType() == SGV.getType()) { in computeTypeMapping()
818 TypeMap.addTypeMapping(DGV->getType(), SGV.getType()); in computeTypeMapping()
821 for (GlobalValue &SGV : SrcM->aliases()) in computeTypeMapping()
822 if (GlobalValue *DGV = getLinkedToGlobal(&SGV)) in computeTypeMapping()
823 TypeMap.addTypeMapping(DGV->getType(), SGV.getType()); in computeTypeMapping()
1000 bool IRLinker::shouldLink(GlobalValue *DGV, GlobalValue &SGV) { in shouldLink() argument
1001 if (ValuesToLink.count(&SGV) || SGV.hasLocalLinkage()) in shouldLink()
1007 if (SGV.isDeclaration() || DoneLinkingBodies) in shouldLink()
1014 AddLazyFor(SGV, [this, &LazilyAdded](GlobalValue &GV) { in shouldLink()
1021 Expected<Constant *> IRLinker::linkGlobalValueProto(GlobalValue *SGV, in linkGlobalValueProto() argument
1023 GlobalValue *DGV = getLinkedToGlobal(SGV); in linkGlobalValueProto()
1025 bool ShouldLink = shouldLink(DGV, *SGV); in linkGlobalValueProto()
1029 auto I = ValueMap.find(SGV); in linkGlobalValueProto()
1033 I = IndirectSymbolValueMap.find(SGV); in linkGlobalValueProto()
1042 if (SGV->hasAppendingLinkage() || (DGV && DGV->hasAppendingLinkage())) in linkGlobalValueProto()
1044 cast<GlobalVariable>(SGV)); in linkGlobalValueProto()
1057 NewGV = copyGlobalValueProto(SGV, ShouldLink || ForIndirectSymbol); in linkGlobalValueProto()
1077 forceRenaming(NewGV, SGV->getName()); in linkGlobalValueProto()
1080 if (const Comdat *SC = SGV->getComdat()) { in linkGlobalValueProto()
1098 if (DGV && NewGV != SGV) { in linkGlobalValueProto()
1100 NewGV, TypeMap.get(SGV->getType())); in linkGlobalValueProto()