Skip to content

Commit fa37e5c

Browse files
committed
[SandboxIR] Add extern templates for GlobalWithNodeAPI
This symbols need to be explicitly export for windows shared library builds when explicitly visibility macros are enabled.
1 parent 5884484 commit fa37e5c

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

llvm/include/llvm/SandboxIR/Constant.h

+9
Original file line numberDiff line numberDiff line change
@@ -1227,6 +1227,15 @@ class ConstantTokenNone final : public Constant {
12271227
#endif
12281228
};
12291229

1230+
extern template class LLVM_TEMPLATE_ABI GlobalWithNodeAPI<
1231+
GlobalIFunc, llvm::GlobalIFunc, GlobalObject, llvm::GlobalObject>;
1232+
extern template class LLVM_TEMPLATE_ABI GlobalWithNodeAPI<
1233+
Function, llvm::Function, GlobalObject, llvm::GlobalObject>;
1234+
extern template class LLVM_TEMPLATE_ABI GlobalWithNodeAPI<
1235+
GlobalVariable, llvm::GlobalVariable, GlobalObject, llvm::GlobalObject>;
1236+
extern template class LLVM_TEMPLATE_ABI GlobalWithNodeAPI<
1237+
GlobalAlias, llvm::GlobalAlias, GlobalValue, llvm::GlobalValue>;
1238+
12301239
} // namespace llvm::sandboxir
12311240

12321241
#endif // LLVM_SANDBOXIR_CONSTANT_H

llvm/lib/SandboxIR/Constant.cpp

+20
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,26 @@ GlobalT &GlobalWithNodeAPI<GlobalT, LLVMGlobalT, ParentT, LLVMParentT>::
291291
return cast<GlobalT>(*Ctx.getValue(&LLVMGV));
292292
}
293293

294+
#if defined(__clang__) && __clang_major__ < 19 && defined(_MSC_VER)
295+
template LLVM_EXPORT_TEMPLATE GlobalIFunc &
296+
GlobalWithNodeAPI<GlobalIFunc, llvm::GlobalIFunc, GlobalObject,
297+
llvm::GlobalObject>::LLVMGVToGV::operator()(llvm::GlobalIFunc
298+
&LLVMGV)
299+
const;
300+
template LLVM_EXPORT_TEMPLATE Function &
301+
GlobalWithNodeAPI<Function, llvm::Function, GlobalObject, llvm::GlobalObject>::
302+
LLVMGVToGV::operator()(llvm::Function &LLVMGV) const;
303+
304+
template LLVM_EXPORT_TEMPLATE GlobalVariable &GlobalWithNodeAPI<
305+
GlobalVariable, llvm::GlobalVariable, GlobalObject,
306+
llvm::GlobalObject>::LLVMGVToGV::operator()(llvm::GlobalVariable &LLVMGV)
307+
const;
308+
template LLVM_EXPORT_TEMPLATE GlobalAlias &
309+
GlobalWithNodeAPI<GlobalAlias, llvm::GlobalAlias, GlobalValue,
310+
llvm::GlobalValue>::LLVMGVToGV::operator()(llvm::GlobalAlias
311+
&LLVMGV) const;
312+
#endif
313+
294314
// Explicit instantiations.
295315
template class GlobalWithNodeAPI<GlobalIFunc, llvm::GlobalIFunc, GlobalObject,
296316
llvm::GlobalObject>;

0 commit comments

Comments
 (0)