diff --git a/lib/IRGen/GenKeyPath.cpp b/lib/IRGen/GenKeyPath.cpp index 851528cc872..40e7a720cfd 100644 --- a/lib/IRGen/GenKeyPath.cpp +++ b/lib/IRGen/GenKeyPath.cpp @@ -1269,14 +1269,18 @@ void IRGenModule::emitSILProperty(SILProperty *prop) { var->setConstant(true); var->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global); var->setAlignment(4); - + TheTrivialPropertyDescriptor = var; } else { auto entity = LinkEntity::forPropertyDescriptor(prop->getDecl()); auto linkInfo = LinkInfo::get(*this, entity, ForDefinition); - llvm::GlobalAlias::create(linkInfo.getLinkage(), - linkInfo.getName(), - TheTrivialPropertyDescriptor); + auto *GA = llvm::GlobalAlias::create(linkInfo.getLinkage(), + linkInfo.getName(), + TheTrivialPropertyDescriptor); + ApplyIRLinkage({linkInfo.getLinkage(), + linkInfo.getVisibility(), + llvm::GlobalValue::DLLExportStorageClass}) + .to(GA); } return; } diff --git a/test/IRGen/trivial-property-descriptors.swift b/test/IRGen/trivial-property-descriptors.swift new file mode 100644 index 00000000000..931a36a17fc --- /dev/null +++ b/test/IRGen/trivial-property-descriptors.swift @@ -0,0 +1,10 @@ +// RUN: %swift -target x86_64-unknown-windows-msvc -parse-stdlib -module-name Swift -enable-resilience -S -emit-ir -o - %s | %FileCheck %s + +public struct S {} +extension S { + public var i: () { return () } + public var j: () { return () } +} + +// CHECK: @"$ss1SV1jytvpMV" = dllexport alias { i32 }, { i32 }* @"$ss1SV1iytvpMV" +