Skip to content

Commit 0446c3e

Browse files
committed
IRGen: Clean up emitObjCClassSymbol() to improve code reuse
1 parent 4207738 commit 0446c3e

File tree

1 file changed

+9
-15
lines changed

1 file changed

+9
-15
lines changed

lib/IRGen/GenMeta.cpp

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3044,23 +3044,17 @@ namespace {
30443044
/// references, we emit the symbol as a global asm block.
30453045
static void emitObjCClassSymbol(IRGenModule &IGM,
30463046
ClassDecl *classDecl,
3047-
llvm::GlobalValue *metadata) {
3048-
llvm::SmallString<32> classSymbol;
3049-
LinkEntity::forObjCClass(classDecl).mangle(classSymbol);
3050-
3051-
// Create the alias.
3052-
auto *metadataTy = cast<llvm::PointerType>(metadata->getType());
3047+
llvm::Constant *metadata) {
3048+
auto entity = LinkEntity::forObjCClass(classDecl);
3049+
LinkInfo link = LinkInfo::get(IGM, entity, ForDefinition);
30533050

30543051
// Create the alias.
3055-
auto *alias = llvm::GlobalAlias::create(metadataTy->getElementType(),
3056-
metadataTy->getAddressSpace(),
3057-
metadata->getLinkage(),
3058-
classSymbol.str(), metadata,
3059-
IGM.getModule());
3060-
alias->setVisibility(metadata->getVisibility());
3061-
3062-
if (IGM.useDllStorage())
3063-
alias->setDLLStorageClass(metadata->getDLLStorageClass());
3052+
auto *ptrTy = cast<llvm::PointerType>(metadata->getType());
3053+
auto *alias = llvm::GlobalAlias::create(
3054+
ptrTy->getElementType(), ptrTy->getAddressSpace(), link.getLinkage(),
3055+
link.getName(), metadata, &IGM.Module);
3056+
ApplyIRLinkage({link.getLinkage(), link.getVisibility(), link.getDLLStorage()})
3057+
.to(alias);
30643058
}
30653059

30663060
/// Emit the type metadata or metadata template for a class.

0 commit comments

Comments
 (0)