[PATCH] D118980: Don't dllexport reference temporaries
Hans Wennborg via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Feb 4 07:35:00 PST 2022
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rG853e0aa424e4: Don't dllexport reference temporaries (authored by hans).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D118980/new/
https://reviews.llvm.org/D118980
Files:
clang/lib/CodeGen/CodeGenModule.cpp
clang/test/CodeGenCXX/reference-temporary-ms.cpp
Index: clang/test/CodeGenCXX/reference-temporary-ms.cpp
===================================================================
--- /dev/null
+++ clang/test/CodeGenCXX/reference-temporary-ms.cpp
@@ -0,0 +1,8 @@
+// RUN: %clang_cc1 -emit-llvm %s -o - -triple=i386-pc-win32 -fms-extensions | FileCheck %s
+
+const int __declspec(dllexport) &Exported = 42;
+
+// The reference temporary shouldn't be dllexport, even if the reference is.
+// CHECK: @"?$RT1 at Exported@@3ABHB" = internal constant i32 42
+
+// CHECK: @"?Exported@@3ABHB" = dso_local dllexport constant i32* @"?$RT1 at Exported@@3ABHB"
Index: clang/lib/CodeGen/CodeGenModule.cpp
===================================================================
--- clang/lib/CodeGen/CodeGenModule.cpp
+++ clang/lib/CodeGen/CodeGenModule.cpp
@@ -5725,6 +5725,9 @@
/*InsertBefore=*/nullptr, llvm::GlobalVariable::NotThreadLocal, TargetAS);
if (emitter) emitter->finalize(GV);
setGVProperties(GV, VD);
+ if (GV->getDLLStorageClass() == llvm::GlobalVariable::DLLExportStorageClass)
+ // The reference temporary should never be dllexport.
+ GV->setDLLStorageClass(llvm::GlobalVariable::DefaultStorageClass);
GV->setAlignment(Align.getAsAlign());
if (supportsCOMDAT() && GV->isWeakForLinker())
GV->setComdat(TheModule.getOrInsertComdat(GV->getName()));
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D118980.405966.patch
Type: text/x-patch
Size: 1315 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20220204/3d1bbc38/attachment.bin>
More information about the cfe-commits
mailing list