Lines Matching refs:SGV
69 bool doPromoteLocalToGlobal(const GlobalValue *SGV);
125 /// import SGV as a definition, otherwise import as a declaration.
126 bool doImportAsDefinition(const GlobalValue *SGV);
128 /// Get the name for SGV that should be used in the linked destination
131 std::string getName(const GlobalValue *SGV);
140 /// Get the new linkage for SGV that should be used in the linked destination
143 GlobalValue::LinkageTypes getLinkage(const GlobalValue *SGV);
169 bool ModuleLinker::doImportAsDefinition(const GlobalValue *SGV) {
172 auto *GA = dyn_cast<GlobalAlias>(SGV);
188 if (isa<GlobalVariable>(SGV) && !SGV->isDeclaration() &&
189 !SGV->hasWeakAnyLinkage())
192 auto *SF = dyn_cast<Function>(SGV);
199 bool ModuleLinker::doPromoteLocalToGlobal(const GlobalValue *SGV) {
200 assert(SGV->hasLocalLinkage());
213 auto *GVar = dyn_cast<GlobalVariable>(SGV);
223 std::string ModuleLinker::getName(const GlobalValue *SGV) {
229 if (SGV->hasLocalLinkage() &&
230 (doPromoteLocalToGlobal(SGV) || isPerformingImport()))
232 SGV->getName(),
233 ImportIndex->getModuleId(SGV->getParent()->getModuleIdentifier()));
234 return SGV->getName();
237 GlobalValue::LinkageTypes ModuleLinker::getLinkage(const GlobalValue *SGV) {
243 if (SGV->hasLocalLinkage() && doPromoteLocalToGlobal(SGV))
245 return SGV->getLinkage();
250 return SGV->getLinkage();
252 switch (SGV->getLinkage()) {
258 if (doImportAsDefinition(SGV) && !dyn_cast<GlobalAlias>(SGV))
261 return SGV->getLinkage();
266 if (!doImportAsDefinition(SGV))
269 return SGV->getLinkage();
275 return SGV->getLinkage();
282 assert(!doImportAsDefinition(SGV));
291 if (doImportAsDefinition(SGV) && !dyn_cast<GlobalAlias>(SGV))
309 if (doPromoteLocalToGlobal(SGV)) {
310 if (doImportAsDefinition(SGV) && !dyn_cast<GlobalAlias>(SGV))
317 return SGV->getLinkage();
321 assert(!doImportAsDefinition(SGV));
323 return SGV->getLinkage();
328 return SGV->getLinkage();