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

Lines Matching defs:SGV

444   GlobalValue *copyGlobalValueProto(const GlobalValue *SGV, bool ForDefinition);
477 /// Given the GlobaValue \p SGV in the source module, and the matching
478 /// GlobalValue \p DGV (if any), return true if the linker will pull \p SGV
482 bool shouldLink(GlobalValue *DGV, GlobalValue &SGV);
565 Value *GlobalValueMaterializer::materialize(Value *SGV) {
566 return TheIRLinker.materialize(SGV, false);
569 Value *LocalValueMaterializer::materialize(Value *SGV) {
570 return TheIRLinker.materialize(SGV, true);
574 auto *SGV = dyn_cast<GlobalValue>(V);
575 if (!SGV)
578 Expected<Constant *> NewProto = linkGlobalValueProto(SGV, ForIndirectSymbol);
611 if (ForIndirectSymbol && ValueMap.lookup(SGV) == New)
614 if (ForIndirectSymbol || shouldLink(New, *SGV))
615 setError(linkGlobalValueBody(*New, *SGV));
685 GlobalValue *IRLinker::copyGlobalValueProto(const GlobalValue *SGV,
688 if (auto *SGVar = dyn_cast<GlobalVariable>(SGV)) {
690 } else if (auto *SF = dyn_cast<Function>(SGV)) {
694 NewGV = copyGlobalIndirectSymbolProto(cast<GlobalIndirectSymbol>(SGV));
695 else if (SGV->getValueType()->isFunctionTy())
697 Function::Create(cast<FunctionType>(TypeMap.get(SGV->getValueType())),
698 GlobalValue::ExternalLinkage, SGV->getAddressSpace(),
699 SGV->getName(), &DstM);
702 new GlobalVariable(DstM, TypeMap.get(SGV->getValueType()),
704 /*init*/ nullptr, SGV->getName(),
706 SGV->getThreadLocalMode(), SGV->getAddressSpace());
710 NewGV->setLinkage(SGV->getLinkage());
711 else if (SGV->hasExternalWeakLinkage())
716 if (isa<GlobalVariable>(SGV) || SGV->isDeclaration())
717 NewGO->copyMetadata(cast<GlobalObject>(SGV), 0);
745 for (GlobalValue &SGV : SrcM->globals()) {
746 GlobalValue *DGV = getLinkedToGlobal(&SGV);
750 if (!DGV->hasAppendingLinkage() || !SGV.hasAppendingLinkage()) {
751 TypeMap.addTypeMapping(DGV->getType(), SGV.getType());
757 ArrayType *SAT = cast<ArrayType>(SGV.getValueType());
761 for (GlobalValue &SGV : *SrcM)
762 if (GlobalValue *DGV = getLinkedToGlobal(&SGV)) {
763 if (DGV->getType() == SGV.getType()) {
764 // If the types of DGV and SGV are the same, it means that DGV is from
772 TypeMap.addTypeMapping(DGV->getType(), SGV.getType());
775 for (GlobalValue &SGV : SrcM->aliases())
776 if (GlobalValue *DGV = getLinkedToGlobal(&SGV))
777 TypeMap.addTypeMapping(DGV->getType(), SGV.getType());
943 bool IRLinker::shouldLink(GlobalValue *DGV, GlobalValue &SGV) {
944 if (ValuesToLink.count(&SGV) || SGV.hasLocalLinkage())
950 if (SGV.isDeclaration() || DoneLinkingBodies)
956 AddLazyFor(SGV, [this, &LazilyAdded](GlobalValue &GV) {
963 Expected<Constant *> IRLinker::linkGlobalValueProto(GlobalValue *SGV,
965 GlobalValue *DGV = getLinkedToGlobal(SGV);
967 bool ShouldLink = shouldLink(DGV, *SGV);
971 auto I = ValueMap.find(SGV);
975 I = IndirectSymbolValueMap.find(SGV);
984 assert(!DGV || SGV->hasAppendingLinkage() == DGV->hasAppendingLinkage());
985 if (SGV->hasAppendingLinkage())
987 cast<GlobalVariable>(SGV));
999 NewGV = copyGlobalValueProto(SGV, ShouldLink || ForIndirectSymbol);
1001 forceRenaming(NewGV, SGV->getName());
1012 if (const Comdat *SC = SGV->getComdat()) {
1027 // containing a GV from the source module, in which case SGV will be
1030 if (DGV && NewGV != SGV) {
1032 NewGV, TypeMap.get(SGV->getType()));