Home | History | Annotate | Download | only in Linker

Lines Matching refs:SGV

432   GlobalValue *copyGlobalValueProto(const GlobalValue *SGV, bool ForDefinition);
480 bool shouldLink(GlobalValue *DGV, GlobalValue &SGV);
614 auto *SGV = dyn_cast<GlobalValue>(V);
615 if (!SGV)
618 return linkGlobalValueProto(SGV, ForAlias);
733 GlobalValue *IRLinker::copyGlobalValueProto(const GlobalValue *SGV,
736 if (auto *SGVar = dyn_cast<GlobalVariable>(SGV)) {
738 } else if (auto *SF = dyn_cast<Function>(SGV)) {
742 NewGV = copyGlobalAliasProto(cast<GlobalAlias>(SGV));
745 DstM, TypeMap.get(SGV->getType()->getElementType()),
747 /*init*/ nullptr, SGV->getName(),
748 /*insertbefore*/ nullptr, SGV->getThreadLocalMode(),
749 SGV->getType()->getAddressSpace());
753 NewGV->setLinkage(SGV->getLinkage());
754 else if (SGV->hasExternalWeakLinkage() || SGV->hasWeakLinkage() ||
755 SGV->hasLinkOnceLinkage())
758 NewGV->copyAttributesFrom(SGV);
767 for (GlobalValue &SGV : SrcM.globals()) {
768 GlobalValue *DGV = getLinkedToGlobal(&SGV);
772 if (!DGV->hasAppendingLinkage() || !SGV.hasAppendingLinkage()) {
773 TypeMap.addTypeMapping(DGV->getType(), SGV.getType());
779 ArrayType *SAT = cast<ArrayType>(SGV.getType()->getElementType());
783 for (GlobalValue &SGV : SrcM)
784 if (GlobalValue *DGV = getLinkedToGlobal(&SGV))
785 TypeMap.addTypeMapping(DGV->getType(), SGV.getType());
787 for (GlobalValue &SGV : SrcM.aliases())
788 if (GlobalValue *DGV = getLinkedToGlobal(&SGV))
789 TypeMap.addTypeMapping(DGV->getType(), SGV.getType());
981 static bool useExistingDest(GlobalValue &SGV, GlobalValue *DGV,
986 if (SGV.isDeclaration())
989 if (DGV->isDeclarationForLinker() && !SGV.isDeclarationForLinker())
998 bool IRLinker::shouldLink(GlobalValue *DGV, GlobalValue &SGV) {
1002 assert(!ValuesToLink.count(&SGV) &&
1007 if (ValuesToLink.count(&SGV))
1010 if (SGV.hasLocalLinkage())
1016 if (SGV.hasAvailableExternallyLinkage())
1022 AddLazyFor(SGV, [this](GlobalValue &GV) { maybeAdd(&GV); });
1023 return ValuesToLink.count(&SGV);
1026 Constant *IRLinker::linkGlobalValueProto(GlobalValue *SGV, bool ForAlias) {
1027 GlobalValue *DGV = getLinkedToGlobal(SGV);
1029 bool ShouldLink = shouldLink(DGV, *SGV);
1033 auto I = ValueMap.find(SGV);
1037 I = AliasValueMap.find(SGV);
1044 DGV = getLinkedToGlobal(SGV);
1047 assert(!DGV || SGV->hasAppendingLinkage() == DGV->hasAppendingLinkage());
1048 if (SGV->hasAppendingLinkage())
1050 cast<GlobalVariable>(SGV));
1053 if (useExistingDest(*SGV, DGV, ShouldLink)) {
1062 NewGV = copyGlobalValueProto(SGV, ShouldLink);
1064 forceRenaming(NewGV, SGV->getName());
1067 if (const Comdat *SC = SGV->getComdat()) {
1081 C = ConstantExpr::getBitCast(NewGV, TypeMap.get(SGV->getType()));