diff options
| -rw-r--r-- | llvm/include/llvm/CodeGen/MachineLoopInfo.h | 3 | ||||
| -rw-r--r-- | llvm/include/llvm/IR/PassManager.h | 8 |
2 files changed, 9 insertions, 2 deletions
diff --git a/llvm/include/llvm/CodeGen/MachineLoopInfo.h b/llvm/include/llvm/CodeGen/MachineLoopInfo.h index 6942264a11c0..bcec6df39e73 100644 --- a/llvm/include/llvm/CodeGen/MachineLoopInfo.h +++ b/llvm/include/llvm/CodeGen/MachineLoopInfo.h @@ -42,7 +42,8 @@ namespace llvm { class MachineDominatorTree; // Implementation in LoopInfoImpl.h class MachineLoop; -extern template class LoopBase<MachineBasicBlock, MachineLoop>; +extern template class LLVM_TEMPLATE_ABI + LoopBase<MachineBasicBlock, MachineLoop>; class MachineLoop : public LoopBase<MachineBasicBlock, MachineLoop> { public: diff --git a/llvm/include/llvm/IR/PassManager.h b/llvm/include/llvm/IR/PassManager.h index ea8226c6e17b..acb17a8090c5 100644 --- a/llvm/include/llvm/IR/PassManager.h +++ b/llvm/include/llvm/IR/PassManager.h @@ -657,8 +657,14 @@ private: AnalysisManagerT *InnerAM; }; +// NOTE: The LLVM_ABI annotation cannot be used here because MSVC disallows +// storage-class specifiers on class members outside of the class declaration +// (C2720). LLVM_ATTRIBUTE_VISIBILITY_DEFAULT only applies to non-Windows +// targets so it is used instead. Without this annotation, compiling LLVM as a +// shared library with -fvisibility=hidden using GCC fails to export the symbol +// even though InnerAnalysisManagerProxy is already annotated with LLVM_ABI. template <typename AnalysisManagerT, typename IRUnitT, typename... ExtraArgTs> -AnalysisKey +LLVM_ATTRIBUTE_VISIBILITY_DEFAULT AnalysisKey InnerAnalysisManagerProxy<AnalysisManagerT, IRUnitT, ExtraArgTs...>::Key; /// Provide the \c FunctionAnalysisManager to \c Module proxy. |
