[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