[PATCH] D134784: [IR] Don't allow DLL storage-class and local linkage

Fangrui Song via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 27 21:50:42 PDT 2022


MaskRay added inline comments.


================
Comment at: clang/lib/CodeGen/CodeGenModule.cpp:6016
   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);
+  // Prevent InternalLinkage) globals getting assigned a dllimport or dllexport.
+  if (Linkage != llvm::GlobalVariable::InternalLinkage) {
----------------
Prevent local linkage globals from ... or just "Don't assign ... to local linkage ..."


================
Comment at: clang/lib/CodeGen/CodeGenModule.cpp:6017
+  // Prevent InternalLinkage) globals getting assigned a dllimport or dllexport.
+  if (Linkage != llvm::GlobalVariable::InternalLinkage) {
+    setGVProperties(GV, VD);
----------------
`llvm::GlobalValue::isLocalLinkage(Linkage)` ?



This change is to make `CodeGenCXX/reference-temporary-ms.cpp` work


================
Comment at: llvm/include/llvm/IR/GlobalValue.h:279
+  void setDLLStorageClass(DLLStorageClassTypes C) {
+    assert((!hasLocalLinkage() || (C == DefaultStorageClass)) &&
+           "local linkage requires DefaultStorageClass");
----------------



CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D134784/new/

https://reviews.llvm.org/D134784



More information about the llvm-commits mailing list