Index: llvm/include/llvm/Analysis/LazyCallGraph.h =================================================================== --- llvm/include/llvm/Analysis/LazyCallGraph.h +++ llvm/include/llvm/Analysis/LazyCallGraph.h @@ -420,7 +420,7 @@ /// outer structure. SCCs do not support mutation of the call graph, that /// must be done through the containing \c RefSCC in order to fully reason /// about the ordering and connections of the graph. - class SCC { + class LLVM_EXTERNAL_VISIBILITY SCC { friend class LazyCallGraph; friend class LazyCallGraph::Node; Index: llvm/include/llvm/Analysis/LoopInfo.h =================================================================== --- llvm/include/llvm/Analysis/LoopInfo.h +++ llvm/include/llvm/Analysis/LoopInfo.h @@ -526,7 +526,7 @@ /// Represents a single loop in the control flow graph. Note that not all SCCs /// in the CFG are necessarily loops. -class Loop : public LoopBase { +class LLVM_EXTERNAL_VISIBILITY Loop : public LoopBase { public: /// A range representing the start and end location of a loop. class LocRange { Index: llvm/include/llvm/Analysis/LoopNestAnalysis.h =================================================================== --- llvm/include/llvm/Analysis/LoopNestAnalysis.h +++ llvm/include/llvm/Analysis/LoopNestAnalysis.h @@ -24,7 +24,7 @@ class LPMUpdater; /// This class represents a loop nest and can be used to query its properties. -class LoopNest { +class LLVM_EXTERNAL_VISIBILITY LoopNest { public: /// Construct a loop nest rooted by loop \p Root. LoopNest(Loop &Root, ScalarEvolution &SE); Index: llvm/include/llvm/CodeGen/MachineFunction.h =================================================================== --- llvm/include/llvm/CodeGen/MachineFunction.h +++ llvm/include/llvm/CodeGen/MachineFunction.h @@ -224,7 +224,7 @@ : LandingPadBlock(MBB) {} }; -class MachineFunction { +class LLVM_EXTERNAL_VISIBILITY MachineFunction { Function &F; const LLVMTargetMachine &Target; const TargetSubtargetInfo *STI; Index: llvm/include/llvm/IR/Function.h =================================================================== --- llvm/include/llvm/IR/Function.h +++ llvm/include/llvm/IR/Function.h @@ -58,7 +58,8 @@ class BranchProbabilityInfo; class BlockFrequencyInfo; -class Function : public GlobalObject, public ilist_node { +class LLVM_EXTERNAL_VISIBILITY Function : public GlobalObject, + public ilist_node { public: using BasicBlockListType = SymbolTableList; Index: llvm/include/llvm/IR/Module.h =================================================================== --- llvm/include/llvm/IR/Module.h +++ llvm/include/llvm/IR/Module.h @@ -64,9 +64,9 @@ /// constant references to global variables in the module. When a global /// variable is destroyed, it should have no entries in the GlobalValueRefMap. /// The main container class for the LLVM Intermediate Representation. -class Module { -/// @name Types And Enumerations -/// @{ +class LLVM_EXTERNAL_VISIBILITY Module { + /// @name Types And Enumerations + /// @{ public: /// The type for the list of global variables. using GlobalListType = SymbolTableList;