@@ -3044,23 +3044,17 @@ namespace {
3044
3044
// / references, we emit the symbol as a global asm block.
3045
3045
static void emitObjCClassSymbol (IRGenModule &IGM,
3046
3046
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);
3053
3050
3054
3051
// 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);
3064
3058
}
3065
3059
3066
3060
// / Emit the type metadata or metadata template for a class.
0 commit comments