Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clang tooling generated visibility macros for Clang #109702

Open
wants to merge 5 commits into
base: main
Choose a base branch
from

Conversation

fsfod
Copy link
Contributor

@fsfod fsfod commented Sep 23, 2024

These changes will be needed to support shared library\DLL builds and plugins on windows by adding explicit visibility macros to public API surface that will dllexport'ed. Another benefit will be reducing the numbers of exported symbols on non windows platforms when the default symbol visibility is set to hidden at a latter time. A previous discussion by @compnerd about the required changes can be found here Supporting LLVM_BUILD_LLVM_DYLIB on Windows

The visibility macros generated here are created by a ids clang tooling based tool that @compnerd wrote and I've extended.
To reduce the numbers of exports and to avoid explicitly deleting more special members than necessary for MSVC only classes with out of line members or static variables have visibility macros added to them. I've included the config file that used to drive the tool for the Clang codebase to add some insight files are or aren't modified. I skipped running clang-format over most of changes just so the diffs are more readable and some files some weird indenting that clang-format to reformat the whole file.
I should add don't intend for this to be merged like this in one big PR unless asked to, I was just asked to post it like this,
These changes also depend on the macros to be added in #108276.

@llvmbot llvmbot added clang Clang issues not falling into any other category backend:ARM backend:AArch64 backend:AMDGPU backend:Hexagon backend:RISC-V backend:PowerPC backend:SystemZ backend:WebAssembly backend:X86 clang-format clang:frontend Language frontend issues, e.g. anything involving "Sema" clang:modules C++20 modules and Clang Header Modules clang:codegen clang:static analyzer xray HLSL HLSL Language Support clang:dataflow Clang Dataflow Analysis framework - https://clang.llvm.org/docs/DataFlowAnalysisIntro.html backend:loongarch clang:analysis clang:openmp OpenMP related changes to Clang labels Sep 23, 2024
@llvmbot
Copy link
Collaborator

llvmbot commented Sep 23, 2024

@llvm/pr-subscribers-clangir
@llvm/pr-subscribers-xray
@llvm/pr-subscribers-backend-powerpc
@llvm/pr-subscribers-backend-amdgpu
@llvm/pr-subscribers-backend-hexagon

@llvm/pr-subscribers-backend-aarch64

Author: Thomas Fransham (fsfod)

Changes

The visibility macros generated here are created by a ids clang tooling based tool that @compnerd wrote and I've extended.
To reduce the numbers of exports and to avoid explicitly deleting more special members than necessary for MSVC only classes with out of line members or static variables have visibility macros added to them. I've included the config file that used to drive the tool for the Clang codebase to add some insight files are or aren't modified. I skipped running clang-format over most of changes just so the diffs are more readable and some files some weird indenting that clang-format to reformat the whole file.
These changes also depend on the macros to be added in #108276.


Patch is 1.09 MiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/109702.diff

501 Files Affected:

  • (modified) clang/include/clang/APINotes/APINotesManager.h (+2-1)
  • (modified) clang/include/clang/APINotes/APINotesReader.h (+2-1)
  • (modified) clang/include/clang/APINotes/APINotesWriter.h (+2-1)
  • (modified) clang/include/clang/APINotes/APINotesYAMLCompiler.h (+3-2)
  • (modified) clang/include/clang/APINotes/Types.h (+11-10)
  • (modified) clang/include/clang/ARCMigrate/ARCMT.h (+9-8)
  • (modified) clang/include/clang/ARCMigrate/ARCMTActions.h (+6-5)
  • (modified) clang/include/clang/ARCMigrate/FileRemapper.h (+2-1)
  • (modified) clang/include/clang/AST/APNumericStorage.h (+2-1)
  • (modified) clang/include/clang/AST/APValue.h (+12-11)
  • (modified) clang/include/clang/AST/ASTConcept.h (+4-3)
  • (modified) clang/include/clang/AST/ASTConsumer.h (+2-1)
  • (modified) clang/include/clang/AST/ASTContext.h (+5-4)
  • (modified) clang/include/clang/AST/ASTContextAllocate.h (+5-4)
  • (modified) clang/include/clang/AST/ASTDiagnostic.h (+3-2)
  • (modified) clang/include/clang/AST/ASTDumper.h (+2-1)
  • (modified) clang/include/clang/AST/ASTImportError.h (+2-1)
  • (modified) clang/include/clang/AST/ASTImporter.h (+3-2)
  • (modified) clang/include/clang/AST/ASTImporterLookupTable.h (+2-1)
  • (modified) clang/include/clang/AST/ASTMutationListener.h (+2-1)
  • (modified) clang/include/clang/AST/ASTStructuralEquivalence.h (+2-1)
  • (modified) clang/include/clang/AST/ASTTypeTraits.h (+3-2)
  • (modified) clang/include/clang/AST/ASTUnresolvedSet.h (+2-1)
  • (modified) clang/include/clang/AST/Attr.h (+2-1)
  • (modified) clang/include/clang/AST/Availability.h (+2-1)
  • (modified) clang/include/clang/AST/CXXInheritance.h (+3-2)
  • (modified) clang/include/clang/AST/Comment.h (+7-6)
  • (modified) clang/include/clang/AST/CommentBriefParser.h (+2-1)
  • (modified) clang/include/clang/AST/CommentCommandTraits.h (+2-1)
  • (modified) clang/include/clang/AST/CommentLexer.h (+3-2)
  • (modified) clang/include/clang/AST/CommentParser.h (+2-1)
  • (modified) clang/include/clang/AST/CommentSema.h (+2-1)
  • (modified) clang/include/clang/AST/ComparisonCategories.h (+5-4)
  • (modified) clang/include/clang/AST/ComputeDependence.h (+86-85)
  • (modified) clang/include/clang/AST/DataCollection.h (+2-1)
  • (modified) clang/include/clang/AST/Decl.h (+35-34)
  • (modified) clang/include/clang/AST/DeclBase.h (+5-4)
  • (modified) clang/include/clang/AST/DeclCXX.h (+33-32)
  • (modified) clang/include/clang/AST/DeclContextInternals.h (+2-1)
  • (modified) clang/include/clang/AST/DeclFriend.h (+2-1)
  • (modified) clang/include/clang/AST/DeclGroup.h (+2-1)
  • (modified) clang/include/clang/AST/DeclID.h (+3-2)
  • (modified) clang/include/clang/AST/DeclObjC.h (+20-19)
  • (modified) clang/include/clang/AST/DeclOpenMP.h (+7-6)
  • (modified) clang/include/clang/AST/DeclTemplate.h (+25-24)
  • (modified) clang/include/clang/AST/DeclarationName.h (+7-6)
  • (modified) clang/include/clang/AST/DependentDiagnostic.h (+2-1)
  • (modified) clang/include/clang/AST/Expr.h (+40-39)
  • (modified) clang/include/clang/AST/ExprCXX.h (+44-43)
  • (modified) clang/include/clang/AST/ExprConcepts.h (+7-6)
  • (modified) clang/include/clang/AST/ExprObjC.h (+6-5)
  • (modified) clang/include/clang/AST/ExprOpenMP.h (+3-2)
  • (modified) clang/include/clang/AST/ExternalASTMerger.h (+2-1)
  • (modified) clang/include/clang/AST/ExternalASTSource.h (+2-1)
  • (modified) clang/include/clang/AST/FormatString.h (+13-12)
  • (modified) clang/include/clang/AST/JSONNodeDumper.h (+3-2)
  • (modified) clang/include/clang/AST/LambdaCapture.h (+2-1)
  • (modified) clang/include/clang/AST/LocInfoType.h (+2-1)
  • (modified) clang/include/clang/AST/Mangle.h (+5-4)
  • (modified) clang/include/clang/AST/MangleNumberingContext.h (+2-1)
  • (modified) clang/include/clang/AST/NSAPI.h (+2-1)
  • (modified) clang/include/clang/AST/NestedNameSpecifier.h (+4-3)
  • (modified) clang/include/clang/AST/ODRDiagsEmitter.h (+2-1)
  • (modified) clang/include/clang/AST/ODRHash.h (+3-2)
  • (modified) clang/include/clang/AST/OSLog.h (+2-1)
  • (modified) clang/include/clang/AST/OpenACCClause.h (+34-33)
  • (modified) clang/include/clang/AST/OpenMPClause.h (+58-57)
  • (modified) clang/include/clang/AST/ParentMap.h (+2-1)
  • (modified) clang/include/clang/AST/ParentMapContext.h (+2-1)
  • (modified) clang/include/clang/AST/PrettyDeclStackTrace.h (+2-1)
  • (modified) clang/include/clang/AST/PrettyPrinter.h (+2-1)
  • (modified) clang/include/clang/AST/QualTypeNames.h (+3-2)
  • (modified) clang/include/clang/AST/Randstruct.h (+2-1)
  • (modified) clang/include/clang/AST/RawCommentList.h (+3-2)
  • (modified) clang/include/clang/AST/RecordLayout.h (+2-1)
  • (modified) clang/include/clang/AST/Redeclarable.h (+2-1)
  • (modified) clang/include/clang/AST/SelectorLocationsKind.h (+5-4)
  • (modified) clang/include/clang/AST/Stmt.h (+22-21)
  • (modified) clang/include/clang/AST/StmtCXX.h (+5-4)
  • (modified) clang/include/clang/AST/StmtIterator.h (+2-1)
  • (modified) clang/include/clang/AST/StmtObjC.h (+3-2)
  • (modified) clang/include/clang/AST/StmtOpenACC.h (+3-2)
  • (modified) clang/include/clang/AST/StmtOpenMP.h (+80-79)
  • (modified) clang/include/clang/AST/TemplateBase.h (+7-6)
  • (modified) clang/include/clang/AST/TemplateName.h (+6-5)
  • (modified) clang/include/clang/AST/TextNodeDumper.h (+3-2)
  • (modified) clang/include/clang/AST/Type.h (+71-70)
  • (modified) clang/include/clang/AST/TypeLoc.h (+32-31)
  • (modified) clang/include/clang/AST/VTTBuilder.h (+2-1)
  • (modified) clang/include/clang/AST/VTableBuilder.h (+5-4)
  • (modified) clang/include/clang/ASTMatchers/ASTMatchFinder.h (+5-4)
  • (modified) clang/include/clang/ASTMatchers/ASTMatchers.h (+231-230)
  • (modified) clang/include/clang/ASTMatchers/ASTMatchersInternal.h (+14-13)
  • (modified) clang/include/clang/ASTMatchers/Dynamic/Diagnostics.h (+5-4)
  • (modified) clang/include/clang/ASTMatchers/Dynamic/Parser.h (+4-3)
  • (modified) clang/include/clang/ASTMatchers/Dynamic/Registry.h (+3-2)
  • (modified) clang/include/clang/ASTMatchers/Dynamic/VariantValue.h (+6-5)
  • (modified) clang/include/clang/ASTMatchers/GtestMatchers.h (+9-8)
  • (modified) clang/include/clang/Analysis/Analyses/CFGReachabilityAnalysis.h (+2-1)
  • (modified) clang/include/clang/Analysis/Analyses/CalledOnceCheck.h (+2-1)
  • (modified) clang/include/clang/Analysis/Analyses/Consumed.h (+5-4)
  • (modified) clang/include/clang/Analysis/Analyses/Dominators.h (+4-3)
  • (modified) clang/include/clang/Analysis/Analyses/ExprMutationAnalyzer.h (+3-2)
  • (modified) clang/include/clang/Analysis/Analyses/IntervalPartition.h (+6-5)
  • (modified) clang/include/clang/Analysis/Analyses/LiveVariables.h (+5-4)
  • (modified) clang/include/clang/Analysis/Analyses/PostOrderCFGView.h (+3-2)
  • (modified) clang/include/clang/Analysis/Analyses/ReachableCode.h (+4-3)
  • (modified) clang/include/clang/Analysis/Analyses/ThreadSafety.h (+5-4)
  • (modified) clang/include/clang/Analysis/Analyses/ThreadSafetyCommon.h (+2-1)
  • (modified) clang/include/clang/Analysis/Analyses/ThreadSafetyLogical.h (+2-1)
  • (modified) clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h (+9-8)
  • (modified) clang/include/clang/Analysis/Analyses/ThreadSafetyUtil.h (+2-1)
  • (modified) clang/include/clang/Analysis/Analyses/UninitializedValues.h (+3-2)
  • (modified) clang/include/clang/Analysis/Analyses/UnsafeBufferUsage.h (+5-4)
  • (modified) clang/include/clang/Analysis/AnalysisDeclContext.h (+8-7)
  • (modified) clang/include/clang/Analysis/BodyFarm.h (+2-1)
  • (modified) clang/include/clang/Analysis/CFG.h (+7-6)
  • (modified) clang/include/clang/Analysis/CFGStmtMap.h (+2-1)
  • (modified) clang/include/clang/Analysis/CallGraph.h (+3-2)
  • (modified) clang/include/clang/Analysis/CloneDetection.h (+11-10)
  • (modified) clang/include/clang/Analysis/CodeInjector.h (+2-1)
  • (modified) clang/include/clang/Analysis/ConstructionContext.h (+4-3)
  • (modified) clang/include/clang/Analysis/DomainSpecific/CocoaConventions.h (+5-4)
  • (modified) clang/include/clang/Analysis/DomainSpecific/ObjCNoReturn.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/ASTOps.h (+8-7)
  • (modified) clang/include/clang/Analysis/FlowSensitive/AdornedCFG.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Arena.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/CNFFormula.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/DataflowAnalysis.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/DataflowAnalysisContext.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/DataflowEnvironment.h (+4-3)
  • (modified) clang/include/clang/Analysis/FlowSensitive/DebugSupport.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Formula.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Logger.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Models/ChromiumCheckModel.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Models/UncheckedOptionalAccessModel.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/RecordOps.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/SimplifyConstraints.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Solver.h (+4-3)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Transfer.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/TypeErasedDataflowAnalysis.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Value.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/WatchedLiteralsSolver.h (+2-1)
  • (modified) clang/include/clang/Analysis/IssueHash.h (+3-2)
  • (modified) clang/include/clang/Analysis/MacroExpansionContext.h (+2-1)
  • (modified) clang/include/clang/Analysis/PathDiagnostic.h (+14-13)
  • (modified) clang/include/clang/Analysis/ProgramPoint.h (+4-3)
  • (modified) clang/include/clang/Analysis/RetainSummaryManager.h (+5-4)
  • (modified) clang/include/clang/Basic/ASTSourceDescriptor.h (+2-1)
  • (modified) clang/include/clang/Basic/AttrSubjectMatchRules.h (+2-1)
  • (modified) clang/include/clang/Basic/AttributeCommonInfo.h (+2-1)
  • (modified) clang/include/clang/Basic/Attributes.h (+2-1)
  • (modified) clang/include/clang/Basic/Builtins.h (+4-3)
  • (modified) clang/include/clang/Basic/CLWarnings.h (+2-1)
  • (modified) clang/include/clang/Basic/CharInfo.h (+2-1)
  • (modified) clang/include/clang/Basic/CodeGenOptions.h (+2-1)
  • (modified) clang/include/clang/Basic/Cuda.h (+11-10)
  • (modified) clang/include/clang/Basic/DarwinSDKInfo.h (+4-3)
  • (modified) clang/include/clang/Basic/Diagnostic.h (+18-17)
  • (modified) clang/include/clang/Basic/DiagnosticError.h (+2-1)
  • (modified) clang/include/clang/Basic/DiagnosticIDs.h (+2-1)
  • (modified) clang/include/clang/Basic/DiagnosticOptions.h (+3-2)
  • (modified) clang/include/clang/Basic/ExpressionTraits.h (+3-2)
  • (modified) clang/include/clang/Basic/FileEntry.h (+2-1)
  • (modified) clang/include/clang/Basic/FileManager.h (+2-1)
  • (modified) clang/include/clang/Basic/FileSystemStatCache.h (+3-2)
  • (modified) clang/include/clang/Basic/IdentifierTable.h (+9-8)
  • (modified) clang/include/clang/Basic/LangOptions.h (+4-3)
  • (modified) clang/include/clang/Basic/LangStandard.h (+4-3)
  • (modified) clang/include/clang/Basic/MakeSupport.h (+2-1)
  • (modified) clang/include/clang/Basic/Module.h (+3-2)
  • (modified) clang/include/clang/Basic/NoSanitizeList.h (+2-1)
  • (modified) clang/include/clang/Basic/ObjCRuntime.h (+3-2)
  • (modified) clang/include/clang/Basic/OpenCLOptions.h (+2-1)
  • (modified) clang/include/clang/Basic/OpenMPKinds.h (+27-26)
  • (modified) clang/include/clang/Basic/OperatorKinds.h (+2-1)
  • (modified) clang/include/clang/Basic/OperatorPrecedence.h (+2-1)
  • (modified) clang/include/clang/Basic/ParsedAttrInfo.h (+3-2)
  • (modified) clang/include/clang/Basic/PrettyStackTrace.h (+2-1)
  • (modified) clang/include/clang/Basic/ProfileList.h (+2-1)
  • (modified) clang/include/clang/Basic/SanitizerSpecialCaseList.h (+2-1)
  • (modified) clang/include/clang/Basic/Sanitizers.h (+10-9)
  • (modified) clang/include/clang/Basic/Sarif.h (+2-1)
  • (modified) clang/include/clang/Basic/SourceLocation.h (+5-4)
  • (modified) clang/include/clang/Basic/SourceManager.h (+6-5)
  • (modified) clang/include/clang/Basic/SourceManagerInternals.h (+2-1)
  • (modified) clang/include/clang/Basic/SourceMgrAdapter.h (+2-1)
  • (modified) clang/include/clang/Basic/Specifiers.h (+4-3)
  • (modified) clang/include/clang/Basic/Stack.h (+4-3)
  • (modified) clang/include/clang/Basic/SyncScope.h (+2-1)
  • (modified) clang/include/clang/Basic/TargetID.h (+7-6)
  • (modified) clang/include/clang/Basic/TargetInfo.h (+2-1)
  • (modified) clang/include/clang/Basic/TokenKinds.h (+7-6)
  • (modified) clang/include/clang/Basic/TypeTraits.h (+8-7)
  • (modified) clang/include/clang/Basic/Version.h (+10-9)
  • (modified) clang/include/clang/Basic/XRayInstr.h (+3-2)
  • (modified) clang/include/clang/Basic/XRayLists.h (+2-1)
  • (modified) clang/include/clang/CodeGen/BackendUtil.h (+4-3)
  • (modified) clang/include/clang/CodeGen/CGFunctionInfo.h (+4-3)
  • (modified) clang/include/clang/CodeGen/CodeGenABITypes.h (+21-20)
  • (modified) clang/include/clang/CodeGen/CodeGenAction.h (+8-7)
  • (modified) clang/include/clang/CodeGen/ConstantInitBuilder.h (+5-4)
  • (modified) clang/include/clang/CodeGen/ConstantInitFuture.h (+2-1)
  • (modified) clang/include/clang/CodeGen/ModuleBuilder.h (+3-2)
  • (modified) clang/include/clang/CodeGen/ObjectFilePCHContainerWriter.h (+2-1)
  • (modified) clang/include/clang/CodeGen/SwiftCallingConv.h (+15-14)
  • (modified) clang/include/clang/CrossTU/CrossTranslationUnit.h (+9-8)
  • (modified) clang/include/clang/Driver/Action.h (+29-28)
  • (modified) clang/include/clang/Driver/Compilation.h (+2-1)
  • (modified) clang/include/clang/Driver/Distro.h (+2-1)
  • (modified) clang/include/clang/Driver/Driver.h (+8-7)
  • (modified) clang/include/clang/Driver/Job.h (+4-3)
  • (modified) clang/include/clang/Driver/Multilib.h (+5-4)
  • (modified) clang/include/clang/Driver/MultilibBuilder.h (+3-2)
  • (modified) clang/include/clang/Driver/OffloadBundler.h (+5-4)
  • (modified) clang/include/clang/Driver/OptionUtils.h (+3-2)
  • (modified) clang/include/clang/Driver/Options.h (+2-1)
  • (modified) clang/include/clang/Driver/Phases.h (+2-1)
  • (modified) clang/include/clang/Driver/SanitizerArgs.h (+2-1)
  • (modified) clang/include/clang/Driver/Tool.h (+2-1)
  • (modified) clang/include/clang/Driver/ToolChain.h (+2-1)
  • (modified) clang/include/clang/Driver/Types.h (+26-25)
  • (modified) clang/include/clang/Driver/XRayArgs.h (+2-1)
  • (modified) clang/include/clang/Edit/Commit.h (+3-2)
  • (modified) clang/include/clang/Edit/EditedSource.h (+2-1)
  • (modified) clang/include/clang/Edit/EditsReceiver.h (+2-1)
  • (modified) clang/include/clang/Edit/Rewriters.h (+4-3)
  • (modified) clang/include/clang/ExtractAPI/API.h (+36-35)
  • (modified) clang/include/clang/ExtractAPI/APIIgnoresList.h (+3-2)
  • (modified) clang/include/clang/ExtractAPI/DeclarationFragments.h (+3-2)
  • (modified) clang/include/clang/ExtractAPI/ExtractAPIActionBase.h (+2-1)
  • (modified) clang/include/clang/ExtractAPI/FrontendActions.h (+3-2)
  • (modified) clang/include/clang/ExtractAPI/Serialization/SymbolGraphSerializer.h (+3-2)
  • (modified) clang/include/clang/ExtractAPI/TypedefUnderlyingTypeResolver.h (+2-1)
  • (modified) clang/include/clang/Format/Format.h (+36-35)
  • (modified) clang/include/clang/Frontend/ASTConsumers.h (+5-4)
  • (modified) clang/include/clang/Frontend/ASTUnit.h (+4-3)
  • (modified) clang/include/clang/Frontend/ChainedDiagnosticConsumer.h (+2-1)
  • (modified) clang/include/clang/Frontend/CompilerInstance.h (+2-1)
  • (modified) clang/include/clang/Frontend/CompilerInvocation.h (+10-9)
  • (modified) clang/include/clang/Frontend/DiagnosticRenderer.h (+3-2)
  • (modified) clang/include/clang/Frontend/FrontendAction.h (+6-5)
  • (modified) clang/include/clang/Frontend/FrontendActions.h (+27-26)
  • (modified) clang/include/clang/Frontend/FrontendOptions.h (+2-1)
  • (modified) clang/include/clang/Frontend/LayoutOverrideSource.h (+2-1)
  • (modified) clang/include/clang/Frontend/LogDiagnosticPrinter.h (+2-1)
  • (modified) clang/include/clang/Frontend/MultiplexConsumer.h (+3-2)
  • (modified) clang/include/clang/Frontend/PrecompiledPreamble.h (+7-6)
  • (modified) clang/include/clang/Frontend/SARIFDiagnostic.h (+2-1)
  • (modified) clang/include/clang/Frontend/SARIFDiagnosticPrinter.h (+2-1)
  • (modified) clang/include/clang/Frontend/SerializedDiagnosticPrinter.h (+2-1)
  • (modified) clang/include/clang/Frontend/SerializedDiagnosticReader.h (+4-3)
  • (modified) clang/include/clang/Frontend/TextDiagnostic.h (+2-1)
  • (modified) clang/include/clang/Frontend/TextDiagnosticBuffer.h (+2-1)
  • (modified) clang/include/clang/Frontend/TextDiagnosticPrinter.h (+2-1)
  • (modified) clang/include/clang/Frontend/Utils.h (+10-9)
  • (modified) clang/include/clang/Frontend/VerifyDiagnosticConsumer.h (+3-2)
  • (modified) clang/include/clang/FrontendTool/Utils.h (+3-2)
  • (modified) clang/include/clang/Index/CommentToXML.h (+2-1)
  • (modified) clang/include/clang/Index/IndexSymbol.h (+13-12)
  • (modified) clang/include/clang/Index/IndexingAction.h (+8-7)
  • (modified) clang/include/clang/Index/USRGeneration.h (+17-16)
  • (modified) clang/include/clang/IndexSerialization/SerializablePathCollection.h (+4-3)
  • (modified) clang/include/clang/InstallAPI/Context.h (+3-2)
  • (modified) clang/include/clang/InstallAPI/DirectoryScanner.h (+2-1)
  • (modified) clang/include/clang/InstallAPI/DylibVerifier.h (+3-2)
  • (modified) clang/include/clang/InstallAPI/FileList.h (+2-1)
  • (modified) clang/include/clang/InstallAPI/Frontend.h (+2-1)
  • (modified) clang/include/clang/InstallAPI/FrontendRecords.h (+2-1)
  • (modified) clang/include/clang/InstallAPI/HeaderFile.h (+6-5)
  • (modified) clang/include/clang/InstallAPI/Library.h (+2-1)
  • (modified) clang/include/clang/InstallAPI/Visitor.h (+2-1)
  • (modified) clang/include/clang/Interpreter/CodeCompletion.h (+2-1)
  • (modified) clang/include/clang/Interpreter/Interpreter.h (+3-2)
  • (modified) clang/include/clang/Lex/CodeCompletionHandler.h (+2-1)
  • (modified) clang/include/clang/Lex/DependencyDirectivesScanner.h (+3-2)
  • (modified) clang/include/clang/Lex/DirectoryLookup.h (+3-2)
  • (modified) clang/include/clang/Lex/ExternalPreprocessorSource.h (+2-1)
  • (modified) clang/include/clang/Lex/HeaderMap.h (+3-2)
  • (modified) clang/include/clang/Lex/HeaderSearch.h (+5-4)
  • (modified) clang/include/clang/Lex/Lexer.h (+2-1)
  • (modified) clang/include/clang/Lex/LiteralSupport.h (+7-6)
  • (modified) clang/include/clang/Lex/MacroArgs.h (+2-1)
  • (modified) clang/include/clang/Lex/MacroInfo.h (+5-4)
  • (modified) clang/include/clang/Lex/ModuleLoader.h (+2-1)
  • (modified) clang/include/clang/Lex/ModuleMap.h (+3-2)
  • (modified) clang/include/clang/Lex/PPCallbacks.h (+3-2)
  • (modified) clang/include/clang/Lex/PPConditionalDirectiveRecord.h (+2-1)
  • (modified) clang/include/clang/Lex/Pragma.h (+5-4)
  • (modified) clang/include/clang/Lex/PreprocessingRecord.h (+5-4)
  • (modified) clang/include/clang/Lex/Preprocessor.h (+4-3)
  • (modified) clang/include/clang/Lex/PreprocessorLexer.h (+2-1)
  • (modified) clang/include/clang/Lex/ScratchBuffer.h (+2-1)
  • (modified) clang/include/clang/Lex/Token.h (+2-1)
  • (modified) clang/include/clang/Lex/TokenConcatenation.h (+2-1)
  • (modified) clang/include/clang/Lex/TokenLexer.h (+2-1)
  • (modified) clang/include/clang/Parse/ParseAST.h (+3-2)
  • (modified) clang/include/clang/Parse/Parser.h (+13-12)
  • (modified) clang/include/clang/Parse/RAIIObjectsForParser.h (+2-1)
  • (modified) clang/include/clang/Rewrite/Core/HTMLRewrite.h (+10-9)
  • (modified) clang/include/clang/Rewrite/Core/Rewriter.h (+2-1)
  • (modified) clang/include/clang/Rewrite/Core/TokenRewriter.h (+2-1)
  • (modified) clang/include/clang/Rewrite/Frontend/ASTConsumers.h (+4-3)
  • (modified) clang/include/clang/Rewrite/Frontend/FixItRewriter.h (+3-2)
  • (modified) clang/include/clang/Rewrite/Frontend/FrontendActions.h (+8-7)
  • (modified) clang/include/clang/Rewrite/Frontend/Rewriters.h (+4-3)
  • (modified) clang/include/clang/Sema/AnalysisBasedWarnings.h (+3-2)
  • (modified) clang/include/clang/Sema/CodeCompleteConsumer.h (+20-19)
  • (modified) clang/include/clang/Sema/DeclSpec.h (+7-6)
  • (modified) clang/include/clang/Sema/DelayedDiagnostic.h (+2-1)
  • (modified) clang/include/clang/Sema/ExternalSemaSource.h (+2-1)
diff --git a/clang/include/clang/APINotes/APINotesManager.h b/clang/include/clang/APINotes/APINotesManager.h
index 98592438e90eab..05d7930d3a2e7f 100644
--- a/clang/include/clang/APINotes/APINotesManager.h
+++ b/clang/include/clang/APINotes/APINotesManager.h
@@ -10,6 +10,7 @@
 #define LLVM_CLANG_APINOTES_APINOTESMANAGER_H
 
 #include "clang/Basic/SourceLocation.h"
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/ArrayRef.h"
 #include "llvm/ADT/DenseMap.h"
 #include "llvm/ADT/PointerUnion.h"
@@ -41,7 +42,7 @@ class APINotesReader;
 /// external API notes files that correspond to a given header. Its primary
 /// operation is \c findAPINotes(), which finds the API notes reader that
 /// provides information about the declarations at that location.
-class APINotesManager {
+class CLANG_ABI APINotesManager {
   using ReaderEntry = llvm::PointerUnion<DirectoryEntryRef, APINotesReader *>;
 
   SourceManager &SM;
diff --git a/clang/include/clang/APINotes/APINotesReader.h b/clang/include/clang/APINotes/APINotesReader.h
index baf63340640242..58ee2857c7930f 100644
--- a/clang/include/clang/APINotes/APINotesReader.h
+++ b/clang/include/clang/APINotes/APINotesReader.h
@@ -16,6 +16,7 @@
 #define LLVM_CLANG_APINOTES_READER_H
 
 #include "clang/APINotes/Types.h"
+#include "clang/Support/Compiler.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/VersionTuple.h"
 #include <memory>
@@ -25,7 +26,7 @@ namespace api_notes {
 
 /// A class that reads API notes data from a binary file that was written by
 /// the \c APINotesWriter.
-class APINotesReader {
+class CLANG_ABI APINotesReader {
   class Implementation;
   std::unique_ptr<Implementation> Implementation;
 
diff --git a/clang/include/clang/APINotes/APINotesWriter.h b/clang/include/clang/APINotes/APINotesWriter.h
index 3cc16c3d959faf..b8b45a89dcfc8b 100644
--- a/clang/include/clang/APINotes/APINotesWriter.h
+++ b/clang/include/clang/APINotes/APINotesWriter.h
@@ -16,6 +16,7 @@
 #define LLVM_CLANG_APINOTES_WRITER_H
 
 #include "clang/APINotes/Types.h"
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/StringRef.h"
 #include "llvm/Support/VersionTuple.h"
 #include "llvm/Support/raw_ostream.h"
@@ -29,7 +30,7 @@ namespace api_notes {
 
 /// A class that writes API notes data to a binary representation that can be
 /// read by the \c APINotesReader.
-class APINotesWriter {
+class CLANG_ABI APINotesWriter {
   class Implementation;
   std::unique_ptr<Implementation> Implementation;
 
diff --git a/clang/include/clang/APINotes/APINotesYAMLCompiler.h b/clang/include/clang/APINotes/APINotesYAMLCompiler.h
index 9c24ed85b6a124..3954cf347e8244 100644
--- a/clang/include/clang/APINotes/APINotesYAMLCompiler.h
+++ b/clang/include/clang/APINotes/APINotesYAMLCompiler.h
@@ -9,6 +9,7 @@
 #ifndef LLVM_CLANG_APINOTES_APINOTESYAMLCOMPILER_H
 #define LLVM_CLANG_APINOTES_APINOTESYAMLCOMPILER_H
 
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/StringRef.h"
 #include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/raw_ostream.h"
@@ -22,10 +23,10 @@ namespace api_notes {
 /// Parses the APINotes YAML content and writes the representation back to the
 /// specified stream.  This provides a means of testing the YAML processing of
 /// the APINotes format.
-bool parseAndDumpAPINotes(llvm::StringRef YI, llvm::raw_ostream &OS);
+CLANG_ABI bool parseAndDumpAPINotes(llvm::StringRef YI, llvm::raw_ostream &OS);
 
 /// Converts API notes from YAML format to binary format.
-bool compileAPINotes(llvm::StringRef YAMLInput, const FileEntry *SourceFile,
+CLANG_ABI bool compileAPINotes(llvm::StringRef YAMLInput, const FileEntry *SourceFile,
                      llvm::raw_ostream &OS,
                      llvm::SourceMgr::DiagHandlerTy DiagHandler = nullptr,
                      void *DiagHandlerCtxt = nullptr);
diff --git a/clang/include/clang/APINotes/Types.h b/clang/include/clang/APINotes/Types.h
index 89889910d1a073..574406586c4674 100644
--- a/clang/include/clang/APINotes/Types.h
+++ b/clang/include/clang/APINotes/Types.h
@@ -10,6 +10,7 @@
 #define LLVM_CLANG_APINOTES_TYPES_H
 
 #include "clang/Basic/Specifiers.h"
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/ArrayRef.h"
 #include "llvm/ADT/StringRef.h"
 #include <climits>
@@ -49,7 +50,7 @@ enum class SwiftNewTypeKind {
 /// Describes API notes data for any entity.
 ///
 /// This is used as the base of all API notes.
-class CommonEntityInfo {
+class CLANG_ABI CommonEntityInfo {
 public:
   /// Message to use when this entity is unavailable.
   std::string UnavailableMsg;
@@ -132,7 +133,7 @@ inline bool operator!=(const CommonEntityInfo &LHS,
 }
 
 /// Describes API notes for types.
-class CommonTypeInfo : public CommonEntityInfo {
+class CLANG_ABI CommonTypeInfo : public CommonEntityInfo {
   /// The Swift type to which a given type is bridged.
   ///
   /// Reflects the swift_bridge attribute.
@@ -194,7 +195,7 @@ inline bool operator!=(const CommonTypeInfo &LHS, const CommonTypeInfo &RHS) {
 
 /// Describes API notes data for an Objective-C class or protocol or a C++
 /// namespace.
-class ContextInfo : public CommonTypeInfo {
+class CLANG_ABI ContextInfo : public CommonTypeInfo {
   /// Whether this class has a default nullability.
   LLVM_PREFERRED_TYPE(bool)
   unsigned HasDefaultNullability : 1;
@@ -301,7 +302,7 @@ inline bool operator!=(const ContextInfo &LHS, const ContextInfo &RHS) {
 }
 
 /// API notes for a variable/property.
-class VariableInfo : public CommonEntityInfo {
+class CLANG_ABI VariableInfo : public CommonEntityInfo {
   /// Whether this property has been audited for nullability.
   LLVM_PREFERRED_TYPE(bool)
   unsigned NullabilityAudited : 1;
@@ -358,7 +359,7 @@ inline bool operator!=(const VariableInfo &LHS, const VariableInfo &RHS) {
 }
 
 /// Describes API notes data for an Objective-C property.
-class ObjCPropertyInfo : public VariableInfo {
+class CLANG_ABI ObjCPropertyInfo : public VariableInfo {
   LLVM_PREFERRED_TYPE(bool)
   unsigned SwiftImportAsAccessorsSpecified : 1;
   LLVM_PREFERRED_TYPE(bool)
@@ -416,7 +417,7 @@ inline bool operator!=(const ObjCPropertyInfo &LHS,
 }
 
 /// Describes a function or method parameter.
-class ParamInfo : public VariableInfo {
+class CLANG_ABI ParamInfo : public VariableInfo {
   /// Whether noescape was specified.
   LLVM_PREFERRED_TYPE(bool)
   unsigned NoEscapeSpecified : 1;
@@ -486,7 +487,7 @@ inline bool operator!=(const ParamInfo &LHS, const ParamInfo &RHS) {
 }
 
 /// API notes for a function or method.
-class FunctionInfo : public CommonEntityInfo {
+class CLANG_ABI FunctionInfo : public CommonEntityInfo {
 private:
   static constexpr const uint64_t NullabilityKindMask = 0x3;
   static constexpr const unsigned NullabilityKindSize = 2;
@@ -606,7 +607,7 @@ inline bool operator!=(const FunctionInfo &LHS, const FunctionInfo &RHS) {
 }
 
 /// Describes API notes data for an Objective-C method.
-class ObjCMethodInfo : public FunctionInfo {
+class CLANG_ABI ObjCMethodInfo : public FunctionInfo {
 public:
   /// Whether this is a designated initializer of its class.
   LLVM_PREFERRED_TYPE(bool)
@@ -675,7 +676,7 @@ class EnumConstantInfo : public CommonEntityInfo {
 };
 
 /// Describes API notes data for a tag.
-class TagInfo : public CommonTypeInfo {
+class CLANG_ABI TagInfo : public CommonTypeInfo {
   LLVM_PREFERRED_TYPE(bool)
   unsigned HasFlagEnum : 1;
   LLVM_PREFERRED_TYPE(bool)
@@ -765,7 +766,7 @@ inline bool operator!=(const TagInfo &LHS, const TagInfo &RHS) {
 }
 
 /// Describes API notes data for a typedef.
-class TypedefInfo : public CommonTypeInfo {
+class CLANG_ABI TypedefInfo : public CommonTypeInfo {
 public:
   std::optional<SwiftNewTypeKind> SwiftWrapper;
 
diff --git a/clang/include/clang/ARCMigrate/ARCMT.h b/clang/include/clang/ARCMigrate/ARCMT.h
index 2b950e3d2cc2bf..dc078101e371ff 100644
--- a/clang/include/clang/ARCMigrate/ARCMT.h
+++ b/clang/include/clang/ARCMigrate/ARCMT.h
@@ -12,6 +12,7 @@
 #include "clang/ARCMigrate/FileRemapper.h"
 #include "clang/Basic/SourceLocation.h"
 #include "clang/Frontend/CompilerInvocation.h"
+#include "clang/Support/Compiler.h"
 
 namespace clang {
   class ASTContext;
@@ -37,7 +38,7 @@ namespace arcmt {
 /// the pre-migration ARC diagnostics.
 ///
 /// \returns false if no error is produced, true otherwise.
-bool
+CLANG_ABI bool
 checkForManualIssues(CompilerInvocation &CI, const FrontendInputFile &Input,
                      std::shared_ptr<PCHContainerOperations> PCHContainerOps,
                      DiagnosticConsumer *DiagClient,
@@ -48,7 +49,7 @@ checkForManualIssues(CompilerInvocation &CI, const FrontendInputFile &Input,
 /// applies automatic modifications to source files to conform to ARC.
 ///
 /// \returns false if no error is produced, true otherwise.
-bool
+CLANG_ABI bool
 applyTransformations(CompilerInvocation &origCI,
                      const FrontendInputFile &Input,
                      std::shared_ptr<PCHContainerOperations> PCHContainerOps,
@@ -65,7 +66,7 @@ applyTransformations(CompilerInvocation &origCI,
 /// the pre-migration ARC diagnostics.
 ///
 /// \returns false if no error is produced, true otherwise.
-bool migrateWithTemporaryFiles(
+CLANG_ABI bool migrateWithTemporaryFiles(
     CompilerInvocation &origCI, const FrontendInputFile &Input,
     std::shared_ptr<PCHContainerOperations> PCHContainerOps,
     DiagnosticConsumer *DiagClient, StringRef outputDir,
@@ -75,7 +76,7 @@ bool migrateWithTemporaryFiles(
 /// migrateWithTemporaryFiles produced.
 ///
 /// \returns false if no error is produced, true otherwise.
-bool getFileRemappings(std::vector<std::pair<std::string,std::string> > &remap,
+CLANG_ABI bool getFileRemappings(std::vector<std::pair<std::string,std::string> > &remap,
                        StringRef outputDir,
                        DiagnosticConsumer *DiagClient);
 
@@ -83,17 +84,17 @@ bool getFileRemappings(std::vector<std::pair<std::string,std::string> > &remap,
 /// info.
 ///
 /// \returns false if no error is produced, true otherwise.
-bool getFileRemappingsFromFileList(
+CLANG_ABI bool getFileRemappingsFromFileList(
                         std::vector<std::pair<std::string,std::string> > &remap,
                         ArrayRef<StringRef> remapFiles,
                         DiagnosticConsumer *DiagClient);
 
 typedef void (*TransformFn)(MigrationPass &pass);
 
-std::vector<TransformFn> getAllTransformations(LangOptions::GCMode OrigGCMode,
+CLANG_ABI std::vector<TransformFn> getAllTransformations(LangOptions::GCMode OrigGCMode,
                                                bool NoFinalizeRemoval);
 
-class MigrationProcess {
+class CLANG_ABI MigrationProcess {
   CompilerInvocation OrigCI;
   std::shared_ptr<PCHContainerOperations> PCHContainerOps;
   DiagnosticConsumer *DiagClient;
@@ -107,7 +108,7 @@ class MigrationProcess {
                    DiagnosticConsumer *diagClient,
                    StringRef outputDir = StringRef());
 
-  class RewriteListener {
+  class CLANG_ABI RewriteListener {
   public:
     virtual ~RewriteListener();
 
diff --git a/clang/include/clang/ARCMigrate/ARCMTActions.h b/clang/include/clang/ARCMigrate/ARCMTActions.h
index 714f4b33db446b..50c6142078f5c8 100644
--- a/clang/include/clang/ARCMigrate/ARCMTActions.h
+++ b/clang/include/clang/ARCMigrate/ARCMTActions.h
@@ -11,12 +11,13 @@
 
 #include "clang/ARCMigrate/FileRemapper.h"
 #include "clang/Frontend/FrontendAction.h"
+#include "clang/Support/Compiler.h"
 #include <memory>
 
 namespace clang {
 namespace arcmt {
 
-class CheckAction : public WrapperFrontendAction {
+class CLANG_ABI CheckAction : public WrapperFrontendAction {
 protected:
   bool BeginInvocation(CompilerInstance &CI) override;
 
@@ -24,7 +25,7 @@ class CheckAction : public WrapperFrontendAction {
   CheckAction(std::unique_ptr<FrontendAction> WrappedAction);
 };
 
-class ModifyAction : public WrapperFrontendAction {
+class CLANG_ABI ModifyAction : public WrapperFrontendAction {
 protected:
   bool BeginInvocation(CompilerInstance &CI) override;
 
@@ -32,7 +33,7 @@ class ModifyAction : public WrapperFrontendAction {
   ModifyAction(std::unique_ptr<FrontendAction> WrappedAction);
 };
 
-class MigrateSourceAction : public ASTFrontendAction {
+class CLANG_ABI MigrateSourceAction : public ASTFrontendAction {
   FileRemapper Remapper;
 protected:
   bool BeginInvocation(CompilerInstance &CI) override;
@@ -40,7 +41,7 @@ class MigrateSourceAction : public ASTFrontendAction {
                                                  StringRef InFile) override;
 };
 
-class MigrateAction : public WrapperFrontendAction {
+class CLANG_ABI MigrateAction : public WrapperFrontendAction {
   std::string MigrateDir;
   std::string PlistOut;
   bool EmitPremigrationARCErrors;
@@ -55,7 +56,7 @@ class MigrateAction : public WrapperFrontendAction {
 };
 
 /// Migrates to modern ObjC syntax.
-class ObjCMigrateAction : public WrapperFrontendAction {
+class CLANG_ABI ObjCMigrateAction : public WrapperFrontendAction {
   std::string MigrateDir;
   unsigned    ObjCMigAction;
   FileRemapper Remapper;
diff --git a/clang/include/clang/ARCMigrate/FileRemapper.h b/clang/include/clang/ARCMigrate/FileRemapper.h
index afcee363516a21..3c9f706a75cf38 100644
--- a/clang/include/clang/ARCMigrate/FileRemapper.h
+++ b/clang/include/clang/ARCMigrate/FileRemapper.h
@@ -11,6 +11,7 @@
 
 #include "clang/Basic/FileEntry.h"
 #include "clang/Basic/LLVM.h"
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/DenseMap.h"
 #include "llvm/ADT/STLExtras.h"
 #include "llvm/ADT/StringRef.h"
@@ -29,7 +30,7 @@ namespace clang {
 
 namespace arcmt {
 
-class FileRemapper {
+class CLANG_ABI FileRemapper {
   // FIXME: Reuse the same FileManager for multiple ASTContexts.
   std::unique_ptr<FileManager> FileMgr;
 
diff --git a/clang/include/clang/AST/APNumericStorage.h b/clang/include/clang/AST/APNumericStorage.h
index 95eddbcd86e839..ae634d46dfea2b 100644
--- a/clang/include/clang/AST/APNumericStorage.h
+++ b/clang/include/clang/AST/APNumericStorage.h
@@ -9,6 +9,7 @@
 #ifndef LLVM_CLANG_AST_APNUMERICSTORAGE_H
 #define LLVM_CLANG_AST_APNUMERICSTORAGE_H
 
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/APFloat.h"
 #include "llvm/ADT/APInt.h"
 
@@ -23,7 +24,7 @@ class ASTContext;
 /// to allocate IntegerLiteral/FloatingLiteral nodes the memory associated with
 /// the APFloat/APInt values will never get freed. APNumericStorage uses
 /// ASTContext's allocator for memory allocation.
-class APNumericStorage {
+class CLANG_ABI APNumericStorage {
   union {
     uint64_t VAL;   ///< Used to store the <= 64 bits integer value.
     uint64_t *pVal; ///< Used to store the >64 bits integer value.
diff --git a/clang/include/clang/AST/APValue.h b/clang/include/clang/AST/APValue.h
index c4206b73b11562..fc6baf92a90202 100644
--- a/clang/include/clang/AST/APValue.h
+++ b/clang/include/clang/AST/APValue.h
@@ -14,6 +14,7 @@
 #define LLVM_CLANG_AST_APVALUE_H
 
 #include "clang/Basic/LLVM.h"
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/APFixedPoint.h"
 #include "llvm/ADT/APFloat.h"
 #include "llvm/ADT/APSInt.h"
@@ -41,7 +42,7 @@ template <typename T> class BasicReaderBase;
   class QualType;
 
 /// Symbolic representation of typeid(T) for some type T.
-class TypeInfoLValue {
+class CLANG_ABI TypeInfoLValue {
   const Type *T;
 
 public:
@@ -119,7 +120,7 @@ namespace clang {
 /// APValue - This class implements a discriminated union of [uninitialized]
 /// [APSInt] [APFloat], [Complex APSInt] [Complex APFloat], [Expr + Offset],
 /// [Vector: N * APValue], [Array: N * APValue]
-class APValue {
+class CLANG_ABI APValue {
   typedef llvm::APFixedPoint APFixedPoint;
   typedef llvm::APSInt APSInt;
   typedef llvm::APFloat APFloat;
@@ -143,7 +144,7 @@ class APValue {
     AddrLabelDiff
   };
 
-  class LValueBase {
+  class CLANG_ABI LValueBase {
     typedef llvm::PointerUnion<const ValueDecl *, const Expr *, TypeInfoLValue,
                                DynamicAllocLValue>
         PtrTy;
@@ -179,11 +180,11 @@ class APValue {
 
     QualType getType() const;
 
-    friend bool operator==(const LValueBase &LHS, const LValueBase &RHS);
+    friend CLANG_ABI bool operator==(const LValueBase &LHS, const LValueBase &RHS);
     friend bool operator!=(const LValueBase &LHS, const LValueBase &RHS) {
       return !(LHS == RHS);
     }
-    friend llvm::hash_code hash_value(const LValueBase &Base);
+    friend CLANG_ABI llvm::hash_code hash_value(const LValueBase &Base);
     friend struct llvm::DenseMapInfo<LValueBase>;
 
   private:
@@ -205,7 +206,7 @@ class APValue {
   typedef llvm::PointerIntPair<const Decl *, 1, bool> BaseOrMemberType;
 
   /// A non-discriminated union of a base, field, or array index.
-  class LValuePathEntry {
+  class CLANG_ABI LValuePathEntry {
     static_assert(sizeof(uintptr_t) <= sizeof(uint64_t),
                   "pointer doesn't fit in 64 bits?");
     uint64_t Value;
@@ -237,7 +238,7 @@ class APValue {
       return llvm::hash_value(A.Value);
     }
   };
-  class LValuePathSerializationHelper {
+  class CLANG_ABI LValuePathSerializationHelper {
     const void *Ty;
 
   public:
@@ -274,7 +275,7 @@ class APValue {
     Vec &operator=(const Vec &) = delete;
     ~Vec() { delete[] Elts; }
   };
-  struct Arr {
+  struct CLANG_ABI Arr {
     APValue *Elts;
     unsigned NumElts, ArrSize;
     Arr(unsigned NumElts, unsigned ArrSize);
@@ -282,7 +283,7 @@ class APValue {
     Arr &operator=(const Arr &) = delete;
     ~Arr();
   };
-  struct StructData {
+  struct CLANG_ABI StructData {
     APValue *Elts;
     unsigned NumBases;
     unsigned NumFields;
@@ -291,7 +292,7 @@ class APValue {
     StructData &operator=(const StructData &) = delete;
     ~StructData();
   };
-  struct UnionData {
+  struct CLANG_ABI UnionData {
     const FieldDecl *Field;
     APValue *Value;
     UnionData();
@@ -702,7 +703,7 @@ class APValue {
 } // end namespace clang.
 
 namespace llvm {
-template<> struct DenseMapInfo<clang::APValue::LValueBase> {
+template<> struct CLANG_ABI DenseMapInfo<clang::APValue::LValueBase> {
   static clang::APValue::LValueBase getEmptyKey();
   static clang::APValue::LValueBase getTombstoneKey();
   static unsigned getHashValue(const clang::APValue::LValueBase &Base);
diff --git a/clang/include/clang/AST/ASTConcept.h b/clang/include/clang/AST/ASTConcept.h
index 00500e214f4ce6..59b0a8e9d96a9d 100644
--- a/clang/include/clang/AST/ASTConcept.h
+++ b/clang/include/clang/AST/ASTConcept.h
@@ -18,6 +18,7 @@
 #include "clang/AST/NestedNameSpecifier.h"
 #include "clang/AST/TemplateBase.h"
 #include "clang/Basic/SourceLocation.h"
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/FoldingSet.h"
 #include "llvm/ADT/PointerUnion.h"
 #include "llvm/ADT/SmallVector.h"
@@ -32,7 +33,7 @@ struct PrintingPolicy;
 
 /// The result of a constraint satisfaction check, containing the necessary
 /// information to diagnose an unsatisfied constraint.
-class ConstraintSatisfaction : public llvm::FoldingSetNode {
+class CLANG_ABI ConstraintSatisfaction : public llvm::FoldingSetNode {
   // The template-like entity that 'owns' the constraint checked here (can be a
   // constrained entity or a concept).
   const NamedDecl *ConstraintOwner = nullptr;
@@ -84,7 +85,7 @@ using UnsatisfiedConstraintRecord =
 /// necessary information to diagnose an unsatisfied constraint.
 ///
 /// This is safe to store in an AST node, as opposed to ConstraintSatisfaction.
-struct ASTConstraintSatisfaction final :
+struct CLANG_ABI ASTConstraintSatisfaction final :
     llvm::TrailingObjects<ASTConstraintSatisfaction,
                           UnsatisfiedConstraintRecord> {
   std::size_t NumRecords;
@@ -121,7 +122,7 @@ struct ASTConstraintSatisfaction final :
 ///
 ///   template <std::derives_from<Expr> T> void dump();
 ///             ~~~~~~~~~~~~~~~~~~~~~~~ (in TemplateTypeParmDecl)
-class ConceptReference {
+class CLANG_ABI ConceptReference {
   // \brief The optional nested name specifier used when naming the concept.
   NestedNameSpecifierLoc NestedNameSpec;
 
diff --git a/clang/include/clang/AST/ASTConsumer.h b/clang/include/clang/AST/ASTConsumer.h
index 447f2592d23595..735c7e549f5cac 100644
--- a/clang/include/clang/AST/ASTConsumer.h
+++ b/clang/include/clang/AST/ASTConsumer.h
@@ -13,6 +13,7 @@
 #ifndef LLVM_CLANG_AST_ASTCONSUMER_H
 #define LLVM_CLANG_AST_ASTCONSUMER_H
 
+#include "clang/Support/Compiler.h"
 namespace clang {
   class ASTContext;
   class CXXMethodDecl;
@@ -31,7 +32,7 @@ namespace clang {
 /// ASTCons...
[truncated]

@llvmbot
Copy link
Collaborator

llvmbot commented Sep 23, 2024

@llvm/pr-subscribers-backend-arm

Author: Thomas Fransham (fsfod)

Changes

The visibility macros generated here are created by a ids clang tooling based tool that @compnerd wrote and I've extended.
To reduce the numbers of exports and to avoid explicitly deleting more special members than necessary for MSVC only classes with out of line members or static variables have visibility macros added to them. I've included the config file that used to drive the tool for the Clang codebase to add some insight files are or aren't modified. I skipped running clang-format over most of changes just so the diffs are more readable and some files some weird indenting that clang-format to reformat the whole file.
These changes also depend on the macros to be added in #108276.


Patch is 1.09 MiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/109702.diff

501 Files Affected:

  • (modified) clang/include/clang/APINotes/APINotesManager.h (+2-1)
  • (modified) clang/include/clang/APINotes/APINotesReader.h (+2-1)
  • (modified) clang/include/clang/APINotes/APINotesWriter.h (+2-1)
  • (modified) clang/include/clang/APINotes/APINotesYAMLCompiler.h (+3-2)
  • (modified) clang/include/clang/APINotes/Types.h (+11-10)
  • (modified) clang/include/clang/ARCMigrate/ARCMT.h (+9-8)
  • (modified) clang/include/clang/ARCMigrate/ARCMTActions.h (+6-5)
  • (modified) clang/include/clang/ARCMigrate/FileRemapper.h (+2-1)
  • (modified) clang/include/clang/AST/APNumericStorage.h (+2-1)
  • (modified) clang/include/clang/AST/APValue.h (+12-11)
  • (modified) clang/include/clang/AST/ASTConcept.h (+4-3)
  • (modified) clang/include/clang/AST/ASTConsumer.h (+2-1)
  • (modified) clang/include/clang/AST/ASTContext.h (+5-4)
  • (modified) clang/include/clang/AST/ASTContextAllocate.h (+5-4)
  • (modified) clang/include/clang/AST/ASTDiagnostic.h (+3-2)
  • (modified) clang/include/clang/AST/ASTDumper.h (+2-1)
  • (modified) clang/include/clang/AST/ASTImportError.h (+2-1)
  • (modified) clang/include/clang/AST/ASTImporter.h (+3-2)
  • (modified) clang/include/clang/AST/ASTImporterLookupTable.h (+2-1)
  • (modified) clang/include/clang/AST/ASTMutationListener.h (+2-1)
  • (modified) clang/include/clang/AST/ASTStructuralEquivalence.h (+2-1)
  • (modified) clang/include/clang/AST/ASTTypeTraits.h (+3-2)
  • (modified) clang/include/clang/AST/ASTUnresolvedSet.h (+2-1)
  • (modified) clang/include/clang/AST/Attr.h (+2-1)
  • (modified) clang/include/clang/AST/Availability.h (+2-1)
  • (modified) clang/include/clang/AST/CXXInheritance.h (+3-2)
  • (modified) clang/include/clang/AST/Comment.h (+7-6)
  • (modified) clang/include/clang/AST/CommentBriefParser.h (+2-1)
  • (modified) clang/include/clang/AST/CommentCommandTraits.h (+2-1)
  • (modified) clang/include/clang/AST/CommentLexer.h (+3-2)
  • (modified) clang/include/clang/AST/CommentParser.h (+2-1)
  • (modified) clang/include/clang/AST/CommentSema.h (+2-1)
  • (modified) clang/include/clang/AST/ComparisonCategories.h (+5-4)
  • (modified) clang/include/clang/AST/ComputeDependence.h (+86-85)
  • (modified) clang/include/clang/AST/DataCollection.h (+2-1)
  • (modified) clang/include/clang/AST/Decl.h (+35-34)
  • (modified) clang/include/clang/AST/DeclBase.h (+5-4)
  • (modified) clang/include/clang/AST/DeclCXX.h (+33-32)
  • (modified) clang/include/clang/AST/DeclContextInternals.h (+2-1)
  • (modified) clang/include/clang/AST/DeclFriend.h (+2-1)
  • (modified) clang/include/clang/AST/DeclGroup.h (+2-1)
  • (modified) clang/include/clang/AST/DeclID.h (+3-2)
  • (modified) clang/include/clang/AST/DeclObjC.h (+20-19)
  • (modified) clang/include/clang/AST/DeclOpenMP.h (+7-6)
  • (modified) clang/include/clang/AST/DeclTemplate.h (+25-24)
  • (modified) clang/include/clang/AST/DeclarationName.h (+7-6)
  • (modified) clang/include/clang/AST/DependentDiagnostic.h (+2-1)
  • (modified) clang/include/clang/AST/Expr.h (+40-39)
  • (modified) clang/include/clang/AST/ExprCXX.h (+44-43)
  • (modified) clang/include/clang/AST/ExprConcepts.h (+7-6)
  • (modified) clang/include/clang/AST/ExprObjC.h (+6-5)
  • (modified) clang/include/clang/AST/ExprOpenMP.h (+3-2)
  • (modified) clang/include/clang/AST/ExternalASTMerger.h (+2-1)
  • (modified) clang/include/clang/AST/ExternalASTSource.h (+2-1)
  • (modified) clang/include/clang/AST/FormatString.h (+13-12)
  • (modified) clang/include/clang/AST/JSONNodeDumper.h (+3-2)
  • (modified) clang/include/clang/AST/LambdaCapture.h (+2-1)
  • (modified) clang/include/clang/AST/LocInfoType.h (+2-1)
  • (modified) clang/include/clang/AST/Mangle.h (+5-4)
  • (modified) clang/include/clang/AST/MangleNumberingContext.h (+2-1)
  • (modified) clang/include/clang/AST/NSAPI.h (+2-1)
  • (modified) clang/include/clang/AST/NestedNameSpecifier.h (+4-3)
  • (modified) clang/include/clang/AST/ODRDiagsEmitter.h (+2-1)
  • (modified) clang/include/clang/AST/ODRHash.h (+3-2)
  • (modified) clang/include/clang/AST/OSLog.h (+2-1)
  • (modified) clang/include/clang/AST/OpenACCClause.h (+34-33)
  • (modified) clang/include/clang/AST/OpenMPClause.h (+58-57)
  • (modified) clang/include/clang/AST/ParentMap.h (+2-1)
  • (modified) clang/include/clang/AST/ParentMapContext.h (+2-1)
  • (modified) clang/include/clang/AST/PrettyDeclStackTrace.h (+2-1)
  • (modified) clang/include/clang/AST/PrettyPrinter.h (+2-1)
  • (modified) clang/include/clang/AST/QualTypeNames.h (+3-2)
  • (modified) clang/include/clang/AST/Randstruct.h (+2-1)
  • (modified) clang/include/clang/AST/RawCommentList.h (+3-2)
  • (modified) clang/include/clang/AST/RecordLayout.h (+2-1)
  • (modified) clang/include/clang/AST/Redeclarable.h (+2-1)
  • (modified) clang/include/clang/AST/SelectorLocationsKind.h (+5-4)
  • (modified) clang/include/clang/AST/Stmt.h (+22-21)
  • (modified) clang/include/clang/AST/StmtCXX.h (+5-4)
  • (modified) clang/include/clang/AST/StmtIterator.h (+2-1)
  • (modified) clang/include/clang/AST/StmtObjC.h (+3-2)
  • (modified) clang/include/clang/AST/StmtOpenACC.h (+3-2)
  • (modified) clang/include/clang/AST/StmtOpenMP.h (+80-79)
  • (modified) clang/include/clang/AST/TemplateBase.h (+7-6)
  • (modified) clang/include/clang/AST/TemplateName.h (+6-5)
  • (modified) clang/include/clang/AST/TextNodeDumper.h (+3-2)
  • (modified) clang/include/clang/AST/Type.h (+71-70)
  • (modified) clang/include/clang/AST/TypeLoc.h (+32-31)
  • (modified) clang/include/clang/AST/VTTBuilder.h (+2-1)
  • (modified) clang/include/clang/AST/VTableBuilder.h (+5-4)
  • (modified) clang/include/clang/ASTMatchers/ASTMatchFinder.h (+5-4)
  • (modified) clang/include/clang/ASTMatchers/ASTMatchers.h (+231-230)
  • (modified) clang/include/clang/ASTMatchers/ASTMatchersInternal.h (+14-13)
  • (modified) clang/include/clang/ASTMatchers/Dynamic/Diagnostics.h (+5-4)
  • (modified) clang/include/clang/ASTMatchers/Dynamic/Parser.h (+4-3)
  • (modified) clang/include/clang/ASTMatchers/Dynamic/Registry.h (+3-2)
  • (modified) clang/include/clang/ASTMatchers/Dynamic/VariantValue.h (+6-5)
  • (modified) clang/include/clang/ASTMatchers/GtestMatchers.h (+9-8)
  • (modified) clang/include/clang/Analysis/Analyses/CFGReachabilityAnalysis.h (+2-1)
  • (modified) clang/include/clang/Analysis/Analyses/CalledOnceCheck.h (+2-1)
  • (modified) clang/include/clang/Analysis/Analyses/Consumed.h (+5-4)
  • (modified) clang/include/clang/Analysis/Analyses/Dominators.h (+4-3)
  • (modified) clang/include/clang/Analysis/Analyses/ExprMutationAnalyzer.h (+3-2)
  • (modified) clang/include/clang/Analysis/Analyses/IntervalPartition.h (+6-5)
  • (modified) clang/include/clang/Analysis/Analyses/LiveVariables.h (+5-4)
  • (modified) clang/include/clang/Analysis/Analyses/PostOrderCFGView.h (+3-2)
  • (modified) clang/include/clang/Analysis/Analyses/ReachableCode.h (+4-3)
  • (modified) clang/include/clang/Analysis/Analyses/ThreadSafety.h (+5-4)
  • (modified) clang/include/clang/Analysis/Analyses/ThreadSafetyCommon.h (+2-1)
  • (modified) clang/include/clang/Analysis/Analyses/ThreadSafetyLogical.h (+2-1)
  • (modified) clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h (+9-8)
  • (modified) clang/include/clang/Analysis/Analyses/ThreadSafetyUtil.h (+2-1)
  • (modified) clang/include/clang/Analysis/Analyses/UninitializedValues.h (+3-2)
  • (modified) clang/include/clang/Analysis/Analyses/UnsafeBufferUsage.h (+5-4)
  • (modified) clang/include/clang/Analysis/AnalysisDeclContext.h (+8-7)
  • (modified) clang/include/clang/Analysis/BodyFarm.h (+2-1)
  • (modified) clang/include/clang/Analysis/CFG.h (+7-6)
  • (modified) clang/include/clang/Analysis/CFGStmtMap.h (+2-1)
  • (modified) clang/include/clang/Analysis/CallGraph.h (+3-2)
  • (modified) clang/include/clang/Analysis/CloneDetection.h (+11-10)
  • (modified) clang/include/clang/Analysis/CodeInjector.h (+2-1)
  • (modified) clang/include/clang/Analysis/ConstructionContext.h (+4-3)
  • (modified) clang/include/clang/Analysis/DomainSpecific/CocoaConventions.h (+5-4)
  • (modified) clang/include/clang/Analysis/DomainSpecific/ObjCNoReturn.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/ASTOps.h (+8-7)
  • (modified) clang/include/clang/Analysis/FlowSensitive/AdornedCFG.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Arena.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/CNFFormula.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/DataflowAnalysis.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/DataflowAnalysisContext.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/DataflowEnvironment.h (+4-3)
  • (modified) clang/include/clang/Analysis/FlowSensitive/DebugSupport.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Formula.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Logger.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Models/ChromiumCheckModel.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Models/UncheckedOptionalAccessModel.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/RecordOps.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/SimplifyConstraints.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Solver.h (+4-3)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Transfer.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/TypeErasedDataflowAnalysis.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Value.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/WatchedLiteralsSolver.h (+2-1)
  • (modified) clang/include/clang/Analysis/IssueHash.h (+3-2)
  • (modified) clang/include/clang/Analysis/MacroExpansionContext.h (+2-1)
  • (modified) clang/include/clang/Analysis/PathDiagnostic.h (+14-13)
  • (modified) clang/include/clang/Analysis/ProgramPoint.h (+4-3)
  • (modified) clang/include/clang/Analysis/RetainSummaryManager.h (+5-4)
  • (modified) clang/include/clang/Basic/ASTSourceDescriptor.h (+2-1)
  • (modified) clang/include/clang/Basic/AttrSubjectMatchRules.h (+2-1)
  • (modified) clang/include/clang/Basic/AttributeCommonInfo.h (+2-1)
  • (modified) clang/include/clang/Basic/Attributes.h (+2-1)
  • (modified) clang/include/clang/Basic/Builtins.h (+4-3)
  • (modified) clang/include/clang/Basic/CLWarnings.h (+2-1)
  • (modified) clang/include/clang/Basic/CharInfo.h (+2-1)
  • (modified) clang/include/clang/Basic/CodeGenOptions.h (+2-1)
  • (modified) clang/include/clang/Basic/Cuda.h (+11-10)
  • (modified) clang/include/clang/Basic/DarwinSDKInfo.h (+4-3)
  • (modified) clang/include/clang/Basic/Diagnostic.h (+18-17)
  • (modified) clang/include/clang/Basic/DiagnosticError.h (+2-1)
  • (modified) clang/include/clang/Basic/DiagnosticIDs.h (+2-1)
  • (modified) clang/include/clang/Basic/DiagnosticOptions.h (+3-2)
  • (modified) clang/include/clang/Basic/ExpressionTraits.h (+3-2)
  • (modified) clang/include/clang/Basic/FileEntry.h (+2-1)
  • (modified) clang/include/clang/Basic/FileManager.h (+2-1)
  • (modified) clang/include/clang/Basic/FileSystemStatCache.h (+3-2)
  • (modified) clang/include/clang/Basic/IdentifierTable.h (+9-8)
  • (modified) clang/include/clang/Basic/LangOptions.h (+4-3)
  • (modified) clang/include/clang/Basic/LangStandard.h (+4-3)
  • (modified) clang/include/clang/Basic/MakeSupport.h (+2-1)
  • (modified) clang/include/clang/Basic/Module.h (+3-2)
  • (modified) clang/include/clang/Basic/NoSanitizeList.h (+2-1)
  • (modified) clang/include/clang/Basic/ObjCRuntime.h (+3-2)
  • (modified) clang/include/clang/Basic/OpenCLOptions.h (+2-1)
  • (modified) clang/include/clang/Basic/OpenMPKinds.h (+27-26)
  • (modified) clang/include/clang/Basic/OperatorKinds.h (+2-1)
  • (modified) clang/include/clang/Basic/OperatorPrecedence.h (+2-1)
  • (modified) clang/include/clang/Basic/ParsedAttrInfo.h (+3-2)
  • (modified) clang/include/clang/Basic/PrettyStackTrace.h (+2-1)
  • (modified) clang/include/clang/Basic/ProfileList.h (+2-1)
  • (modified) clang/include/clang/Basic/SanitizerSpecialCaseList.h (+2-1)
  • (modified) clang/include/clang/Basic/Sanitizers.h (+10-9)
  • (modified) clang/include/clang/Basic/Sarif.h (+2-1)
  • (modified) clang/include/clang/Basic/SourceLocation.h (+5-4)
  • (modified) clang/include/clang/Basic/SourceManager.h (+6-5)
  • (modified) clang/include/clang/Basic/SourceManagerInternals.h (+2-1)
  • (modified) clang/include/clang/Basic/SourceMgrAdapter.h (+2-1)
  • (modified) clang/include/clang/Basic/Specifiers.h (+4-3)
  • (modified) clang/include/clang/Basic/Stack.h (+4-3)
  • (modified) clang/include/clang/Basic/SyncScope.h (+2-1)
  • (modified) clang/include/clang/Basic/TargetID.h (+7-6)
  • (modified) clang/include/clang/Basic/TargetInfo.h (+2-1)
  • (modified) clang/include/clang/Basic/TokenKinds.h (+7-6)
  • (modified) clang/include/clang/Basic/TypeTraits.h (+8-7)
  • (modified) clang/include/clang/Basic/Version.h (+10-9)
  • (modified) clang/include/clang/Basic/XRayInstr.h (+3-2)
  • (modified) clang/include/clang/Basic/XRayLists.h (+2-1)
  • (modified) clang/include/clang/CodeGen/BackendUtil.h (+4-3)
  • (modified) clang/include/clang/CodeGen/CGFunctionInfo.h (+4-3)
  • (modified) clang/include/clang/CodeGen/CodeGenABITypes.h (+21-20)
  • (modified) clang/include/clang/CodeGen/CodeGenAction.h (+8-7)
  • (modified) clang/include/clang/CodeGen/ConstantInitBuilder.h (+5-4)
  • (modified) clang/include/clang/CodeGen/ConstantInitFuture.h (+2-1)
  • (modified) clang/include/clang/CodeGen/ModuleBuilder.h (+3-2)
  • (modified) clang/include/clang/CodeGen/ObjectFilePCHContainerWriter.h (+2-1)
  • (modified) clang/include/clang/CodeGen/SwiftCallingConv.h (+15-14)
  • (modified) clang/include/clang/CrossTU/CrossTranslationUnit.h (+9-8)
  • (modified) clang/include/clang/Driver/Action.h (+29-28)
  • (modified) clang/include/clang/Driver/Compilation.h (+2-1)
  • (modified) clang/include/clang/Driver/Distro.h (+2-1)
  • (modified) clang/include/clang/Driver/Driver.h (+8-7)
  • (modified) clang/include/clang/Driver/Job.h (+4-3)
  • (modified) clang/include/clang/Driver/Multilib.h (+5-4)
  • (modified) clang/include/clang/Driver/MultilibBuilder.h (+3-2)
  • (modified) clang/include/clang/Driver/OffloadBundler.h (+5-4)
  • (modified) clang/include/clang/Driver/OptionUtils.h (+3-2)
  • (modified) clang/include/clang/Driver/Options.h (+2-1)
  • (modified) clang/include/clang/Driver/Phases.h (+2-1)
  • (modified) clang/include/clang/Driver/SanitizerArgs.h (+2-1)
  • (modified) clang/include/clang/Driver/Tool.h (+2-1)
  • (modified) clang/include/clang/Driver/ToolChain.h (+2-1)
  • (modified) clang/include/clang/Driver/Types.h (+26-25)
  • (modified) clang/include/clang/Driver/XRayArgs.h (+2-1)
  • (modified) clang/include/clang/Edit/Commit.h (+3-2)
  • (modified) clang/include/clang/Edit/EditedSource.h (+2-1)
  • (modified) clang/include/clang/Edit/EditsReceiver.h (+2-1)
  • (modified) clang/include/clang/Edit/Rewriters.h (+4-3)
  • (modified) clang/include/clang/ExtractAPI/API.h (+36-35)
  • (modified) clang/include/clang/ExtractAPI/APIIgnoresList.h (+3-2)
  • (modified) clang/include/clang/ExtractAPI/DeclarationFragments.h (+3-2)
  • (modified) clang/include/clang/ExtractAPI/ExtractAPIActionBase.h (+2-1)
  • (modified) clang/include/clang/ExtractAPI/FrontendActions.h (+3-2)
  • (modified) clang/include/clang/ExtractAPI/Serialization/SymbolGraphSerializer.h (+3-2)
  • (modified) clang/include/clang/ExtractAPI/TypedefUnderlyingTypeResolver.h (+2-1)
  • (modified) clang/include/clang/Format/Format.h (+36-35)
  • (modified) clang/include/clang/Frontend/ASTConsumers.h (+5-4)
  • (modified) clang/include/clang/Frontend/ASTUnit.h (+4-3)
  • (modified) clang/include/clang/Frontend/ChainedDiagnosticConsumer.h (+2-1)
  • (modified) clang/include/clang/Frontend/CompilerInstance.h (+2-1)
  • (modified) clang/include/clang/Frontend/CompilerInvocation.h (+10-9)
  • (modified) clang/include/clang/Frontend/DiagnosticRenderer.h (+3-2)
  • (modified) clang/include/clang/Frontend/FrontendAction.h (+6-5)
  • (modified) clang/include/clang/Frontend/FrontendActions.h (+27-26)
  • (modified) clang/include/clang/Frontend/FrontendOptions.h (+2-1)
  • (modified) clang/include/clang/Frontend/LayoutOverrideSource.h (+2-1)
  • (modified) clang/include/clang/Frontend/LogDiagnosticPrinter.h (+2-1)
  • (modified) clang/include/clang/Frontend/MultiplexConsumer.h (+3-2)
  • (modified) clang/include/clang/Frontend/PrecompiledPreamble.h (+7-6)
  • (modified) clang/include/clang/Frontend/SARIFDiagnostic.h (+2-1)
  • (modified) clang/include/clang/Frontend/SARIFDiagnosticPrinter.h (+2-1)
  • (modified) clang/include/clang/Frontend/SerializedDiagnosticPrinter.h (+2-1)
  • (modified) clang/include/clang/Frontend/SerializedDiagnosticReader.h (+4-3)
  • (modified) clang/include/clang/Frontend/TextDiagnostic.h (+2-1)
  • (modified) clang/include/clang/Frontend/TextDiagnosticBuffer.h (+2-1)
  • (modified) clang/include/clang/Frontend/TextDiagnosticPrinter.h (+2-1)
  • (modified) clang/include/clang/Frontend/Utils.h (+10-9)
  • (modified) clang/include/clang/Frontend/VerifyDiagnosticConsumer.h (+3-2)
  • (modified) clang/include/clang/FrontendTool/Utils.h (+3-2)
  • (modified) clang/include/clang/Index/CommentToXML.h (+2-1)
  • (modified) clang/include/clang/Index/IndexSymbol.h (+13-12)
  • (modified) clang/include/clang/Index/IndexingAction.h (+8-7)
  • (modified) clang/include/clang/Index/USRGeneration.h (+17-16)
  • (modified) clang/include/clang/IndexSerialization/SerializablePathCollection.h (+4-3)
  • (modified) clang/include/clang/InstallAPI/Context.h (+3-2)
  • (modified) clang/include/clang/InstallAPI/DirectoryScanner.h (+2-1)
  • (modified) clang/include/clang/InstallAPI/DylibVerifier.h (+3-2)
  • (modified) clang/include/clang/InstallAPI/FileList.h (+2-1)
  • (modified) clang/include/clang/InstallAPI/Frontend.h (+2-1)
  • (modified) clang/include/clang/InstallAPI/FrontendRecords.h (+2-1)
  • (modified) clang/include/clang/InstallAPI/HeaderFile.h (+6-5)
  • (modified) clang/include/clang/InstallAPI/Library.h (+2-1)
  • (modified) clang/include/clang/InstallAPI/Visitor.h (+2-1)
  • (modified) clang/include/clang/Interpreter/CodeCompletion.h (+2-1)
  • (modified) clang/include/clang/Interpreter/Interpreter.h (+3-2)
  • (modified) clang/include/clang/Lex/CodeCompletionHandler.h (+2-1)
  • (modified) clang/include/clang/Lex/DependencyDirectivesScanner.h (+3-2)
  • (modified) clang/include/clang/Lex/DirectoryLookup.h (+3-2)
  • (modified) clang/include/clang/Lex/ExternalPreprocessorSource.h (+2-1)
  • (modified) clang/include/clang/Lex/HeaderMap.h (+3-2)
  • (modified) clang/include/clang/Lex/HeaderSearch.h (+5-4)
  • (modified) clang/include/clang/Lex/Lexer.h (+2-1)
  • (modified) clang/include/clang/Lex/LiteralSupport.h (+7-6)
  • (modified) clang/include/clang/Lex/MacroArgs.h (+2-1)
  • (modified) clang/include/clang/Lex/MacroInfo.h (+5-4)
  • (modified) clang/include/clang/Lex/ModuleLoader.h (+2-1)
  • (modified) clang/include/clang/Lex/ModuleMap.h (+3-2)
  • (modified) clang/include/clang/Lex/PPCallbacks.h (+3-2)
  • (modified) clang/include/clang/Lex/PPConditionalDirectiveRecord.h (+2-1)
  • (modified) clang/include/clang/Lex/Pragma.h (+5-4)
  • (modified) clang/include/clang/Lex/PreprocessingRecord.h (+5-4)
  • (modified) clang/include/clang/Lex/Preprocessor.h (+4-3)
  • (modified) clang/include/clang/Lex/PreprocessorLexer.h (+2-1)
  • (modified) clang/include/clang/Lex/ScratchBuffer.h (+2-1)
  • (modified) clang/include/clang/Lex/Token.h (+2-1)
  • (modified) clang/include/clang/Lex/TokenConcatenation.h (+2-1)
  • (modified) clang/include/clang/Lex/TokenLexer.h (+2-1)
  • (modified) clang/include/clang/Parse/ParseAST.h (+3-2)
  • (modified) clang/include/clang/Parse/Parser.h (+13-12)
  • (modified) clang/include/clang/Parse/RAIIObjectsForParser.h (+2-1)
  • (modified) clang/include/clang/Rewrite/Core/HTMLRewrite.h (+10-9)
  • (modified) clang/include/clang/Rewrite/Core/Rewriter.h (+2-1)
  • (modified) clang/include/clang/Rewrite/Core/TokenRewriter.h (+2-1)
  • (modified) clang/include/clang/Rewrite/Frontend/ASTConsumers.h (+4-3)
  • (modified) clang/include/clang/Rewrite/Frontend/FixItRewriter.h (+3-2)
  • (modified) clang/include/clang/Rewrite/Frontend/FrontendActions.h (+8-7)
  • (modified) clang/include/clang/Rewrite/Frontend/Rewriters.h (+4-3)
  • (modified) clang/include/clang/Sema/AnalysisBasedWarnings.h (+3-2)
  • (modified) clang/include/clang/Sema/CodeCompleteConsumer.h (+20-19)
  • (modified) clang/include/clang/Sema/DeclSpec.h (+7-6)
  • (modified) clang/include/clang/Sema/DelayedDiagnostic.h (+2-1)
  • (modified) clang/include/clang/Sema/ExternalSemaSource.h (+2-1)
diff --git a/clang/include/clang/APINotes/APINotesManager.h b/clang/include/clang/APINotes/APINotesManager.h
index 98592438e90eab..05d7930d3a2e7f 100644
--- a/clang/include/clang/APINotes/APINotesManager.h
+++ b/clang/include/clang/APINotes/APINotesManager.h
@@ -10,6 +10,7 @@
 #define LLVM_CLANG_APINOTES_APINOTESMANAGER_H
 
 #include "clang/Basic/SourceLocation.h"
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/ArrayRef.h"
 #include "llvm/ADT/DenseMap.h"
 #include "llvm/ADT/PointerUnion.h"
@@ -41,7 +42,7 @@ class APINotesReader;
 /// external API notes files that correspond to a given header. Its primary
 /// operation is \c findAPINotes(), which finds the API notes reader that
 /// provides information about the declarations at that location.
-class APINotesManager {
+class CLANG_ABI APINotesManager {
   using ReaderEntry = llvm::PointerUnion<DirectoryEntryRef, APINotesReader *>;
 
   SourceManager &SM;
diff --git a/clang/include/clang/APINotes/APINotesReader.h b/clang/include/clang/APINotes/APINotesReader.h
index baf63340640242..58ee2857c7930f 100644
--- a/clang/include/clang/APINotes/APINotesReader.h
+++ b/clang/include/clang/APINotes/APINotesReader.h
@@ -16,6 +16,7 @@
 #define LLVM_CLANG_APINOTES_READER_H
 
 #include "clang/APINotes/Types.h"
+#include "clang/Support/Compiler.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/VersionTuple.h"
 #include <memory>
@@ -25,7 +26,7 @@ namespace api_notes {
 
 /// A class that reads API notes data from a binary file that was written by
 /// the \c APINotesWriter.
-class APINotesReader {
+class CLANG_ABI APINotesReader {
   class Implementation;
   std::unique_ptr<Implementation> Implementation;
 
diff --git a/clang/include/clang/APINotes/APINotesWriter.h b/clang/include/clang/APINotes/APINotesWriter.h
index 3cc16c3d959faf..b8b45a89dcfc8b 100644
--- a/clang/include/clang/APINotes/APINotesWriter.h
+++ b/clang/include/clang/APINotes/APINotesWriter.h
@@ -16,6 +16,7 @@
 #define LLVM_CLANG_APINOTES_WRITER_H
 
 #include "clang/APINotes/Types.h"
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/StringRef.h"
 #include "llvm/Support/VersionTuple.h"
 #include "llvm/Support/raw_ostream.h"
@@ -29,7 +30,7 @@ namespace api_notes {
 
 /// A class that writes API notes data to a binary representation that can be
 /// read by the \c APINotesReader.
-class APINotesWriter {
+class CLANG_ABI APINotesWriter {
   class Implementation;
   std::unique_ptr<Implementation> Implementation;
 
diff --git a/clang/include/clang/APINotes/APINotesYAMLCompiler.h b/clang/include/clang/APINotes/APINotesYAMLCompiler.h
index 9c24ed85b6a124..3954cf347e8244 100644
--- a/clang/include/clang/APINotes/APINotesYAMLCompiler.h
+++ b/clang/include/clang/APINotes/APINotesYAMLCompiler.h
@@ -9,6 +9,7 @@
 #ifndef LLVM_CLANG_APINOTES_APINOTESYAMLCOMPILER_H
 #define LLVM_CLANG_APINOTES_APINOTESYAMLCOMPILER_H
 
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/StringRef.h"
 #include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/raw_ostream.h"
@@ -22,10 +23,10 @@ namespace api_notes {
 /// Parses the APINotes YAML content and writes the representation back to the
 /// specified stream.  This provides a means of testing the YAML processing of
 /// the APINotes format.
-bool parseAndDumpAPINotes(llvm::StringRef YI, llvm::raw_ostream &OS);
+CLANG_ABI bool parseAndDumpAPINotes(llvm::StringRef YI, llvm::raw_ostream &OS);
 
 /// Converts API notes from YAML format to binary format.
-bool compileAPINotes(llvm::StringRef YAMLInput, const FileEntry *SourceFile,
+CLANG_ABI bool compileAPINotes(llvm::StringRef YAMLInput, const FileEntry *SourceFile,
                      llvm::raw_ostream &OS,
                      llvm::SourceMgr::DiagHandlerTy DiagHandler = nullptr,
                      void *DiagHandlerCtxt = nullptr);
diff --git a/clang/include/clang/APINotes/Types.h b/clang/include/clang/APINotes/Types.h
index 89889910d1a073..574406586c4674 100644
--- a/clang/include/clang/APINotes/Types.h
+++ b/clang/include/clang/APINotes/Types.h
@@ -10,6 +10,7 @@
 #define LLVM_CLANG_APINOTES_TYPES_H
 
 #include "clang/Basic/Specifiers.h"
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/ArrayRef.h"
 #include "llvm/ADT/StringRef.h"
 #include <climits>
@@ -49,7 +50,7 @@ enum class SwiftNewTypeKind {
 /// Describes API notes data for any entity.
 ///
 /// This is used as the base of all API notes.
-class CommonEntityInfo {
+class CLANG_ABI CommonEntityInfo {
 public:
   /// Message to use when this entity is unavailable.
   std::string UnavailableMsg;
@@ -132,7 +133,7 @@ inline bool operator!=(const CommonEntityInfo &LHS,
 }
 
 /// Describes API notes for types.
-class CommonTypeInfo : public CommonEntityInfo {
+class CLANG_ABI CommonTypeInfo : public CommonEntityInfo {
   /// The Swift type to which a given type is bridged.
   ///
   /// Reflects the swift_bridge attribute.
@@ -194,7 +195,7 @@ inline bool operator!=(const CommonTypeInfo &LHS, const CommonTypeInfo &RHS) {
 
 /// Describes API notes data for an Objective-C class or protocol or a C++
 /// namespace.
-class ContextInfo : public CommonTypeInfo {
+class CLANG_ABI ContextInfo : public CommonTypeInfo {
   /// Whether this class has a default nullability.
   LLVM_PREFERRED_TYPE(bool)
   unsigned HasDefaultNullability : 1;
@@ -301,7 +302,7 @@ inline bool operator!=(const ContextInfo &LHS, const ContextInfo &RHS) {
 }
 
 /// API notes for a variable/property.
-class VariableInfo : public CommonEntityInfo {
+class CLANG_ABI VariableInfo : public CommonEntityInfo {
   /// Whether this property has been audited for nullability.
   LLVM_PREFERRED_TYPE(bool)
   unsigned NullabilityAudited : 1;
@@ -358,7 +359,7 @@ inline bool operator!=(const VariableInfo &LHS, const VariableInfo &RHS) {
 }
 
 /// Describes API notes data for an Objective-C property.
-class ObjCPropertyInfo : public VariableInfo {
+class CLANG_ABI ObjCPropertyInfo : public VariableInfo {
   LLVM_PREFERRED_TYPE(bool)
   unsigned SwiftImportAsAccessorsSpecified : 1;
   LLVM_PREFERRED_TYPE(bool)
@@ -416,7 +417,7 @@ inline bool operator!=(const ObjCPropertyInfo &LHS,
 }
 
 /// Describes a function or method parameter.
-class ParamInfo : public VariableInfo {
+class CLANG_ABI ParamInfo : public VariableInfo {
   /// Whether noescape was specified.
   LLVM_PREFERRED_TYPE(bool)
   unsigned NoEscapeSpecified : 1;
@@ -486,7 +487,7 @@ inline bool operator!=(const ParamInfo &LHS, const ParamInfo &RHS) {
 }
 
 /// API notes for a function or method.
-class FunctionInfo : public CommonEntityInfo {
+class CLANG_ABI FunctionInfo : public CommonEntityInfo {
 private:
   static constexpr const uint64_t NullabilityKindMask = 0x3;
   static constexpr const unsigned NullabilityKindSize = 2;
@@ -606,7 +607,7 @@ inline bool operator!=(const FunctionInfo &LHS, const FunctionInfo &RHS) {
 }
 
 /// Describes API notes data for an Objective-C method.
-class ObjCMethodInfo : public FunctionInfo {
+class CLANG_ABI ObjCMethodInfo : public FunctionInfo {
 public:
   /// Whether this is a designated initializer of its class.
   LLVM_PREFERRED_TYPE(bool)
@@ -675,7 +676,7 @@ class EnumConstantInfo : public CommonEntityInfo {
 };
 
 /// Describes API notes data for a tag.
-class TagInfo : public CommonTypeInfo {
+class CLANG_ABI TagInfo : public CommonTypeInfo {
   LLVM_PREFERRED_TYPE(bool)
   unsigned HasFlagEnum : 1;
   LLVM_PREFERRED_TYPE(bool)
@@ -765,7 +766,7 @@ inline bool operator!=(const TagInfo &LHS, const TagInfo &RHS) {
 }
 
 /// Describes API notes data for a typedef.
-class TypedefInfo : public CommonTypeInfo {
+class CLANG_ABI TypedefInfo : public CommonTypeInfo {
 public:
   std::optional<SwiftNewTypeKind> SwiftWrapper;
 
diff --git a/clang/include/clang/ARCMigrate/ARCMT.h b/clang/include/clang/ARCMigrate/ARCMT.h
index 2b950e3d2cc2bf..dc078101e371ff 100644
--- a/clang/include/clang/ARCMigrate/ARCMT.h
+++ b/clang/include/clang/ARCMigrate/ARCMT.h
@@ -12,6 +12,7 @@
 #include "clang/ARCMigrate/FileRemapper.h"
 #include "clang/Basic/SourceLocation.h"
 #include "clang/Frontend/CompilerInvocation.h"
+#include "clang/Support/Compiler.h"
 
 namespace clang {
   class ASTContext;
@@ -37,7 +38,7 @@ namespace arcmt {
 /// the pre-migration ARC diagnostics.
 ///
 /// \returns false if no error is produced, true otherwise.
-bool
+CLANG_ABI bool
 checkForManualIssues(CompilerInvocation &CI, const FrontendInputFile &Input,
                      std::shared_ptr<PCHContainerOperations> PCHContainerOps,
                      DiagnosticConsumer *DiagClient,
@@ -48,7 +49,7 @@ checkForManualIssues(CompilerInvocation &CI, const FrontendInputFile &Input,
 /// applies automatic modifications to source files to conform to ARC.
 ///
 /// \returns false if no error is produced, true otherwise.
-bool
+CLANG_ABI bool
 applyTransformations(CompilerInvocation &origCI,
                      const FrontendInputFile &Input,
                      std::shared_ptr<PCHContainerOperations> PCHContainerOps,
@@ -65,7 +66,7 @@ applyTransformations(CompilerInvocation &origCI,
 /// the pre-migration ARC diagnostics.
 ///
 /// \returns false if no error is produced, true otherwise.
-bool migrateWithTemporaryFiles(
+CLANG_ABI bool migrateWithTemporaryFiles(
     CompilerInvocation &origCI, const FrontendInputFile &Input,
     std::shared_ptr<PCHContainerOperations> PCHContainerOps,
     DiagnosticConsumer *DiagClient, StringRef outputDir,
@@ -75,7 +76,7 @@ bool migrateWithTemporaryFiles(
 /// migrateWithTemporaryFiles produced.
 ///
 /// \returns false if no error is produced, true otherwise.
-bool getFileRemappings(std::vector<std::pair<std::string,std::string> > &remap,
+CLANG_ABI bool getFileRemappings(std::vector<std::pair<std::string,std::string> > &remap,
                        StringRef outputDir,
                        DiagnosticConsumer *DiagClient);
 
@@ -83,17 +84,17 @@ bool getFileRemappings(std::vector<std::pair<std::string,std::string> > &remap,
 /// info.
 ///
 /// \returns false if no error is produced, true otherwise.
-bool getFileRemappingsFromFileList(
+CLANG_ABI bool getFileRemappingsFromFileList(
                         std::vector<std::pair<std::string,std::string> > &remap,
                         ArrayRef<StringRef> remapFiles,
                         DiagnosticConsumer *DiagClient);
 
 typedef void (*TransformFn)(MigrationPass &pass);
 
-std::vector<TransformFn> getAllTransformations(LangOptions::GCMode OrigGCMode,
+CLANG_ABI std::vector<TransformFn> getAllTransformations(LangOptions::GCMode OrigGCMode,
                                                bool NoFinalizeRemoval);
 
-class MigrationProcess {
+class CLANG_ABI MigrationProcess {
   CompilerInvocation OrigCI;
   std::shared_ptr<PCHContainerOperations> PCHContainerOps;
   DiagnosticConsumer *DiagClient;
@@ -107,7 +108,7 @@ class MigrationProcess {
                    DiagnosticConsumer *diagClient,
                    StringRef outputDir = StringRef());
 
-  class RewriteListener {
+  class CLANG_ABI RewriteListener {
   public:
     virtual ~RewriteListener();
 
diff --git a/clang/include/clang/ARCMigrate/ARCMTActions.h b/clang/include/clang/ARCMigrate/ARCMTActions.h
index 714f4b33db446b..50c6142078f5c8 100644
--- a/clang/include/clang/ARCMigrate/ARCMTActions.h
+++ b/clang/include/clang/ARCMigrate/ARCMTActions.h
@@ -11,12 +11,13 @@
 
 #include "clang/ARCMigrate/FileRemapper.h"
 #include "clang/Frontend/FrontendAction.h"
+#include "clang/Support/Compiler.h"
 #include <memory>
 
 namespace clang {
 namespace arcmt {
 
-class CheckAction : public WrapperFrontendAction {
+class CLANG_ABI CheckAction : public WrapperFrontendAction {
 protected:
   bool BeginInvocation(CompilerInstance &CI) override;
 
@@ -24,7 +25,7 @@ class CheckAction : public WrapperFrontendAction {
   CheckAction(std::unique_ptr<FrontendAction> WrappedAction);
 };
 
-class ModifyAction : public WrapperFrontendAction {
+class CLANG_ABI ModifyAction : public WrapperFrontendAction {
 protected:
   bool BeginInvocation(CompilerInstance &CI) override;
 
@@ -32,7 +33,7 @@ class ModifyAction : public WrapperFrontendAction {
   ModifyAction(std::unique_ptr<FrontendAction> WrappedAction);
 };
 
-class MigrateSourceAction : public ASTFrontendAction {
+class CLANG_ABI MigrateSourceAction : public ASTFrontendAction {
   FileRemapper Remapper;
 protected:
   bool BeginInvocation(CompilerInstance &CI) override;
@@ -40,7 +41,7 @@ class MigrateSourceAction : public ASTFrontendAction {
                                                  StringRef InFile) override;
 };
 
-class MigrateAction : public WrapperFrontendAction {
+class CLANG_ABI MigrateAction : public WrapperFrontendAction {
   std::string MigrateDir;
   std::string PlistOut;
   bool EmitPremigrationARCErrors;
@@ -55,7 +56,7 @@ class MigrateAction : public WrapperFrontendAction {
 };
 
 /// Migrates to modern ObjC syntax.
-class ObjCMigrateAction : public WrapperFrontendAction {
+class CLANG_ABI ObjCMigrateAction : public WrapperFrontendAction {
   std::string MigrateDir;
   unsigned    ObjCMigAction;
   FileRemapper Remapper;
diff --git a/clang/include/clang/ARCMigrate/FileRemapper.h b/clang/include/clang/ARCMigrate/FileRemapper.h
index afcee363516a21..3c9f706a75cf38 100644
--- a/clang/include/clang/ARCMigrate/FileRemapper.h
+++ b/clang/include/clang/ARCMigrate/FileRemapper.h
@@ -11,6 +11,7 @@
 
 #include "clang/Basic/FileEntry.h"
 #include "clang/Basic/LLVM.h"
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/DenseMap.h"
 #include "llvm/ADT/STLExtras.h"
 #include "llvm/ADT/StringRef.h"
@@ -29,7 +30,7 @@ namespace clang {
 
 namespace arcmt {
 
-class FileRemapper {
+class CLANG_ABI FileRemapper {
   // FIXME: Reuse the same FileManager for multiple ASTContexts.
   std::unique_ptr<FileManager> FileMgr;
 
diff --git a/clang/include/clang/AST/APNumericStorage.h b/clang/include/clang/AST/APNumericStorage.h
index 95eddbcd86e839..ae634d46dfea2b 100644
--- a/clang/include/clang/AST/APNumericStorage.h
+++ b/clang/include/clang/AST/APNumericStorage.h
@@ -9,6 +9,7 @@
 #ifndef LLVM_CLANG_AST_APNUMERICSTORAGE_H
 #define LLVM_CLANG_AST_APNUMERICSTORAGE_H
 
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/APFloat.h"
 #include "llvm/ADT/APInt.h"
 
@@ -23,7 +24,7 @@ class ASTContext;
 /// to allocate IntegerLiteral/FloatingLiteral nodes the memory associated with
 /// the APFloat/APInt values will never get freed. APNumericStorage uses
 /// ASTContext's allocator for memory allocation.
-class APNumericStorage {
+class CLANG_ABI APNumericStorage {
   union {
     uint64_t VAL;   ///< Used to store the <= 64 bits integer value.
     uint64_t *pVal; ///< Used to store the >64 bits integer value.
diff --git a/clang/include/clang/AST/APValue.h b/clang/include/clang/AST/APValue.h
index c4206b73b11562..fc6baf92a90202 100644
--- a/clang/include/clang/AST/APValue.h
+++ b/clang/include/clang/AST/APValue.h
@@ -14,6 +14,7 @@
 #define LLVM_CLANG_AST_APVALUE_H
 
 #include "clang/Basic/LLVM.h"
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/APFixedPoint.h"
 #include "llvm/ADT/APFloat.h"
 #include "llvm/ADT/APSInt.h"
@@ -41,7 +42,7 @@ template <typename T> class BasicReaderBase;
   class QualType;
 
 /// Symbolic representation of typeid(T) for some type T.
-class TypeInfoLValue {
+class CLANG_ABI TypeInfoLValue {
   const Type *T;
 
 public:
@@ -119,7 +120,7 @@ namespace clang {
 /// APValue - This class implements a discriminated union of [uninitialized]
 /// [APSInt] [APFloat], [Complex APSInt] [Complex APFloat], [Expr + Offset],
 /// [Vector: N * APValue], [Array: N * APValue]
-class APValue {
+class CLANG_ABI APValue {
   typedef llvm::APFixedPoint APFixedPoint;
   typedef llvm::APSInt APSInt;
   typedef llvm::APFloat APFloat;
@@ -143,7 +144,7 @@ class APValue {
     AddrLabelDiff
   };
 
-  class LValueBase {
+  class CLANG_ABI LValueBase {
     typedef llvm::PointerUnion<const ValueDecl *, const Expr *, TypeInfoLValue,
                                DynamicAllocLValue>
         PtrTy;
@@ -179,11 +180,11 @@ class APValue {
 
     QualType getType() const;
 
-    friend bool operator==(const LValueBase &LHS, const LValueBase &RHS);
+    friend CLANG_ABI bool operator==(const LValueBase &LHS, const LValueBase &RHS);
     friend bool operator!=(const LValueBase &LHS, const LValueBase &RHS) {
       return !(LHS == RHS);
     }
-    friend llvm::hash_code hash_value(const LValueBase &Base);
+    friend CLANG_ABI llvm::hash_code hash_value(const LValueBase &Base);
     friend struct llvm::DenseMapInfo<LValueBase>;
 
   private:
@@ -205,7 +206,7 @@ class APValue {
   typedef llvm::PointerIntPair<const Decl *, 1, bool> BaseOrMemberType;
 
   /// A non-discriminated union of a base, field, or array index.
-  class LValuePathEntry {
+  class CLANG_ABI LValuePathEntry {
     static_assert(sizeof(uintptr_t) <= sizeof(uint64_t),
                   "pointer doesn't fit in 64 bits?");
     uint64_t Value;
@@ -237,7 +238,7 @@ class APValue {
       return llvm::hash_value(A.Value);
     }
   };
-  class LValuePathSerializationHelper {
+  class CLANG_ABI LValuePathSerializationHelper {
     const void *Ty;
 
   public:
@@ -274,7 +275,7 @@ class APValue {
     Vec &operator=(const Vec &) = delete;
     ~Vec() { delete[] Elts; }
   };
-  struct Arr {
+  struct CLANG_ABI Arr {
     APValue *Elts;
     unsigned NumElts, ArrSize;
     Arr(unsigned NumElts, unsigned ArrSize);
@@ -282,7 +283,7 @@ class APValue {
     Arr &operator=(const Arr &) = delete;
     ~Arr();
   };
-  struct StructData {
+  struct CLANG_ABI StructData {
     APValue *Elts;
     unsigned NumBases;
     unsigned NumFields;
@@ -291,7 +292,7 @@ class APValue {
     StructData &operator=(const StructData &) = delete;
     ~StructData();
   };
-  struct UnionData {
+  struct CLANG_ABI UnionData {
     const FieldDecl *Field;
     APValue *Value;
     UnionData();
@@ -702,7 +703,7 @@ class APValue {
 } // end namespace clang.
 
 namespace llvm {
-template<> struct DenseMapInfo<clang::APValue::LValueBase> {
+template<> struct CLANG_ABI DenseMapInfo<clang::APValue::LValueBase> {
   static clang::APValue::LValueBase getEmptyKey();
   static clang::APValue::LValueBase getTombstoneKey();
   static unsigned getHashValue(const clang::APValue::LValueBase &Base);
diff --git a/clang/include/clang/AST/ASTConcept.h b/clang/include/clang/AST/ASTConcept.h
index 00500e214f4ce6..59b0a8e9d96a9d 100644
--- a/clang/include/clang/AST/ASTConcept.h
+++ b/clang/include/clang/AST/ASTConcept.h
@@ -18,6 +18,7 @@
 #include "clang/AST/NestedNameSpecifier.h"
 #include "clang/AST/TemplateBase.h"
 #include "clang/Basic/SourceLocation.h"
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/FoldingSet.h"
 #include "llvm/ADT/PointerUnion.h"
 #include "llvm/ADT/SmallVector.h"
@@ -32,7 +33,7 @@ struct PrintingPolicy;
 
 /// The result of a constraint satisfaction check, containing the necessary
 /// information to diagnose an unsatisfied constraint.
-class ConstraintSatisfaction : public llvm::FoldingSetNode {
+class CLANG_ABI ConstraintSatisfaction : public llvm::FoldingSetNode {
   // The template-like entity that 'owns' the constraint checked here (can be a
   // constrained entity or a concept).
   const NamedDecl *ConstraintOwner = nullptr;
@@ -84,7 +85,7 @@ using UnsatisfiedConstraintRecord =
 /// necessary information to diagnose an unsatisfied constraint.
 ///
 /// This is safe to store in an AST node, as opposed to ConstraintSatisfaction.
-struct ASTConstraintSatisfaction final :
+struct CLANG_ABI ASTConstraintSatisfaction final :
     llvm::TrailingObjects<ASTConstraintSatisfaction,
                           UnsatisfiedConstraintRecord> {
   std::size_t NumRecords;
@@ -121,7 +122,7 @@ struct ASTConstraintSatisfaction final :
 ///
 ///   template <std::derives_from<Expr> T> void dump();
 ///             ~~~~~~~~~~~~~~~~~~~~~~~ (in TemplateTypeParmDecl)
-class ConceptReference {
+class CLANG_ABI ConceptReference {
   // \brief The optional nested name specifier used when naming the concept.
   NestedNameSpecifierLoc NestedNameSpec;
 
diff --git a/clang/include/clang/AST/ASTConsumer.h b/clang/include/clang/AST/ASTConsumer.h
index 447f2592d23595..735c7e549f5cac 100644
--- a/clang/include/clang/AST/ASTConsumer.h
+++ b/clang/include/clang/AST/ASTConsumer.h
@@ -13,6 +13,7 @@
 #ifndef LLVM_CLANG_AST_ASTCONSUMER_H
 #define LLVM_CLANG_AST_ASTCONSUMER_H
 
+#include "clang/Support/Compiler.h"
 namespace clang {
   class ASTContext;
   class CXXMethodDecl;
@@ -31,7 +32,7 @@ namespace clang {
 /// ASTCons...
[truncated]

@llvmbot
Copy link
Collaborator

llvmbot commented Sep 23, 2024

@llvm/pr-subscribers-backend-risc-v

Author: Thomas Fransham (fsfod)

Changes

The visibility macros generated here are created by a ids clang tooling based tool that @compnerd wrote and I've extended.
To reduce the numbers of exports and to avoid explicitly deleting more special members than necessary for MSVC only classes with out of line members or static variables have visibility macros added to them. I've included the config file that used to drive the tool for the Clang codebase to add some insight files are or aren't modified. I skipped running clang-format over most of changes just so the diffs are more readable and some files some weird indenting that clang-format to reformat the whole file.
These changes also depend on the macros to be added in #108276.


Patch is 1.09 MiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/109702.diff

501 Files Affected:

  • (modified) clang/include/clang/APINotes/APINotesManager.h (+2-1)
  • (modified) clang/include/clang/APINotes/APINotesReader.h (+2-1)
  • (modified) clang/include/clang/APINotes/APINotesWriter.h (+2-1)
  • (modified) clang/include/clang/APINotes/APINotesYAMLCompiler.h (+3-2)
  • (modified) clang/include/clang/APINotes/Types.h (+11-10)
  • (modified) clang/include/clang/ARCMigrate/ARCMT.h (+9-8)
  • (modified) clang/include/clang/ARCMigrate/ARCMTActions.h (+6-5)
  • (modified) clang/include/clang/ARCMigrate/FileRemapper.h (+2-1)
  • (modified) clang/include/clang/AST/APNumericStorage.h (+2-1)
  • (modified) clang/include/clang/AST/APValue.h (+12-11)
  • (modified) clang/include/clang/AST/ASTConcept.h (+4-3)
  • (modified) clang/include/clang/AST/ASTConsumer.h (+2-1)
  • (modified) clang/include/clang/AST/ASTContext.h (+5-4)
  • (modified) clang/include/clang/AST/ASTContextAllocate.h (+5-4)
  • (modified) clang/include/clang/AST/ASTDiagnostic.h (+3-2)
  • (modified) clang/include/clang/AST/ASTDumper.h (+2-1)
  • (modified) clang/include/clang/AST/ASTImportError.h (+2-1)
  • (modified) clang/include/clang/AST/ASTImporter.h (+3-2)
  • (modified) clang/include/clang/AST/ASTImporterLookupTable.h (+2-1)
  • (modified) clang/include/clang/AST/ASTMutationListener.h (+2-1)
  • (modified) clang/include/clang/AST/ASTStructuralEquivalence.h (+2-1)
  • (modified) clang/include/clang/AST/ASTTypeTraits.h (+3-2)
  • (modified) clang/include/clang/AST/ASTUnresolvedSet.h (+2-1)
  • (modified) clang/include/clang/AST/Attr.h (+2-1)
  • (modified) clang/include/clang/AST/Availability.h (+2-1)
  • (modified) clang/include/clang/AST/CXXInheritance.h (+3-2)
  • (modified) clang/include/clang/AST/Comment.h (+7-6)
  • (modified) clang/include/clang/AST/CommentBriefParser.h (+2-1)
  • (modified) clang/include/clang/AST/CommentCommandTraits.h (+2-1)
  • (modified) clang/include/clang/AST/CommentLexer.h (+3-2)
  • (modified) clang/include/clang/AST/CommentParser.h (+2-1)
  • (modified) clang/include/clang/AST/CommentSema.h (+2-1)
  • (modified) clang/include/clang/AST/ComparisonCategories.h (+5-4)
  • (modified) clang/include/clang/AST/ComputeDependence.h (+86-85)
  • (modified) clang/include/clang/AST/DataCollection.h (+2-1)
  • (modified) clang/include/clang/AST/Decl.h (+35-34)
  • (modified) clang/include/clang/AST/DeclBase.h (+5-4)
  • (modified) clang/include/clang/AST/DeclCXX.h (+33-32)
  • (modified) clang/include/clang/AST/DeclContextInternals.h (+2-1)
  • (modified) clang/include/clang/AST/DeclFriend.h (+2-1)
  • (modified) clang/include/clang/AST/DeclGroup.h (+2-1)
  • (modified) clang/include/clang/AST/DeclID.h (+3-2)
  • (modified) clang/include/clang/AST/DeclObjC.h (+20-19)
  • (modified) clang/include/clang/AST/DeclOpenMP.h (+7-6)
  • (modified) clang/include/clang/AST/DeclTemplate.h (+25-24)
  • (modified) clang/include/clang/AST/DeclarationName.h (+7-6)
  • (modified) clang/include/clang/AST/DependentDiagnostic.h (+2-1)
  • (modified) clang/include/clang/AST/Expr.h (+40-39)
  • (modified) clang/include/clang/AST/ExprCXX.h (+44-43)
  • (modified) clang/include/clang/AST/ExprConcepts.h (+7-6)
  • (modified) clang/include/clang/AST/ExprObjC.h (+6-5)
  • (modified) clang/include/clang/AST/ExprOpenMP.h (+3-2)
  • (modified) clang/include/clang/AST/ExternalASTMerger.h (+2-1)
  • (modified) clang/include/clang/AST/ExternalASTSource.h (+2-1)
  • (modified) clang/include/clang/AST/FormatString.h (+13-12)
  • (modified) clang/include/clang/AST/JSONNodeDumper.h (+3-2)
  • (modified) clang/include/clang/AST/LambdaCapture.h (+2-1)
  • (modified) clang/include/clang/AST/LocInfoType.h (+2-1)
  • (modified) clang/include/clang/AST/Mangle.h (+5-4)
  • (modified) clang/include/clang/AST/MangleNumberingContext.h (+2-1)
  • (modified) clang/include/clang/AST/NSAPI.h (+2-1)
  • (modified) clang/include/clang/AST/NestedNameSpecifier.h (+4-3)
  • (modified) clang/include/clang/AST/ODRDiagsEmitter.h (+2-1)
  • (modified) clang/include/clang/AST/ODRHash.h (+3-2)
  • (modified) clang/include/clang/AST/OSLog.h (+2-1)
  • (modified) clang/include/clang/AST/OpenACCClause.h (+34-33)
  • (modified) clang/include/clang/AST/OpenMPClause.h (+58-57)
  • (modified) clang/include/clang/AST/ParentMap.h (+2-1)
  • (modified) clang/include/clang/AST/ParentMapContext.h (+2-1)
  • (modified) clang/include/clang/AST/PrettyDeclStackTrace.h (+2-1)
  • (modified) clang/include/clang/AST/PrettyPrinter.h (+2-1)
  • (modified) clang/include/clang/AST/QualTypeNames.h (+3-2)
  • (modified) clang/include/clang/AST/Randstruct.h (+2-1)
  • (modified) clang/include/clang/AST/RawCommentList.h (+3-2)
  • (modified) clang/include/clang/AST/RecordLayout.h (+2-1)
  • (modified) clang/include/clang/AST/Redeclarable.h (+2-1)
  • (modified) clang/include/clang/AST/SelectorLocationsKind.h (+5-4)
  • (modified) clang/include/clang/AST/Stmt.h (+22-21)
  • (modified) clang/include/clang/AST/StmtCXX.h (+5-4)
  • (modified) clang/include/clang/AST/StmtIterator.h (+2-1)
  • (modified) clang/include/clang/AST/StmtObjC.h (+3-2)
  • (modified) clang/include/clang/AST/StmtOpenACC.h (+3-2)
  • (modified) clang/include/clang/AST/StmtOpenMP.h (+80-79)
  • (modified) clang/include/clang/AST/TemplateBase.h (+7-6)
  • (modified) clang/include/clang/AST/TemplateName.h (+6-5)
  • (modified) clang/include/clang/AST/TextNodeDumper.h (+3-2)
  • (modified) clang/include/clang/AST/Type.h (+71-70)
  • (modified) clang/include/clang/AST/TypeLoc.h (+32-31)
  • (modified) clang/include/clang/AST/VTTBuilder.h (+2-1)
  • (modified) clang/include/clang/AST/VTableBuilder.h (+5-4)
  • (modified) clang/include/clang/ASTMatchers/ASTMatchFinder.h (+5-4)
  • (modified) clang/include/clang/ASTMatchers/ASTMatchers.h (+231-230)
  • (modified) clang/include/clang/ASTMatchers/ASTMatchersInternal.h (+14-13)
  • (modified) clang/include/clang/ASTMatchers/Dynamic/Diagnostics.h (+5-4)
  • (modified) clang/include/clang/ASTMatchers/Dynamic/Parser.h (+4-3)
  • (modified) clang/include/clang/ASTMatchers/Dynamic/Registry.h (+3-2)
  • (modified) clang/include/clang/ASTMatchers/Dynamic/VariantValue.h (+6-5)
  • (modified) clang/include/clang/ASTMatchers/GtestMatchers.h (+9-8)
  • (modified) clang/include/clang/Analysis/Analyses/CFGReachabilityAnalysis.h (+2-1)
  • (modified) clang/include/clang/Analysis/Analyses/CalledOnceCheck.h (+2-1)
  • (modified) clang/include/clang/Analysis/Analyses/Consumed.h (+5-4)
  • (modified) clang/include/clang/Analysis/Analyses/Dominators.h (+4-3)
  • (modified) clang/include/clang/Analysis/Analyses/ExprMutationAnalyzer.h (+3-2)
  • (modified) clang/include/clang/Analysis/Analyses/IntervalPartition.h (+6-5)
  • (modified) clang/include/clang/Analysis/Analyses/LiveVariables.h (+5-4)
  • (modified) clang/include/clang/Analysis/Analyses/PostOrderCFGView.h (+3-2)
  • (modified) clang/include/clang/Analysis/Analyses/ReachableCode.h (+4-3)
  • (modified) clang/include/clang/Analysis/Analyses/ThreadSafety.h (+5-4)
  • (modified) clang/include/clang/Analysis/Analyses/ThreadSafetyCommon.h (+2-1)
  • (modified) clang/include/clang/Analysis/Analyses/ThreadSafetyLogical.h (+2-1)
  • (modified) clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h (+9-8)
  • (modified) clang/include/clang/Analysis/Analyses/ThreadSafetyUtil.h (+2-1)
  • (modified) clang/include/clang/Analysis/Analyses/UninitializedValues.h (+3-2)
  • (modified) clang/include/clang/Analysis/Analyses/UnsafeBufferUsage.h (+5-4)
  • (modified) clang/include/clang/Analysis/AnalysisDeclContext.h (+8-7)
  • (modified) clang/include/clang/Analysis/BodyFarm.h (+2-1)
  • (modified) clang/include/clang/Analysis/CFG.h (+7-6)
  • (modified) clang/include/clang/Analysis/CFGStmtMap.h (+2-1)
  • (modified) clang/include/clang/Analysis/CallGraph.h (+3-2)
  • (modified) clang/include/clang/Analysis/CloneDetection.h (+11-10)
  • (modified) clang/include/clang/Analysis/CodeInjector.h (+2-1)
  • (modified) clang/include/clang/Analysis/ConstructionContext.h (+4-3)
  • (modified) clang/include/clang/Analysis/DomainSpecific/CocoaConventions.h (+5-4)
  • (modified) clang/include/clang/Analysis/DomainSpecific/ObjCNoReturn.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/ASTOps.h (+8-7)
  • (modified) clang/include/clang/Analysis/FlowSensitive/AdornedCFG.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Arena.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/CNFFormula.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/DataflowAnalysis.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/DataflowAnalysisContext.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/DataflowEnvironment.h (+4-3)
  • (modified) clang/include/clang/Analysis/FlowSensitive/DebugSupport.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Formula.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Logger.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Models/ChromiumCheckModel.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Models/UncheckedOptionalAccessModel.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/RecordOps.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/SimplifyConstraints.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Solver.h (+4-3)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Transfer.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/TypeErasedDataflowAnalysis.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Value.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/WatchedLiteralsSolver.h (+2-1)
  • (modified) clang/include/clang/Analysis/IssueHash.h (+3-2)
  • (modified) clang/include/clang/Analysis/MacroExpansionContext.h (+2-1)
  • (modified) clang/include/clang/Analysis/PathDiagnostic.h (+14-13)
  • (modified) clang/include/clang/Analysis/ProgramPoint.h (+4-3)
  • (modified) clang/include/clang/Analysis/RetainSummaryManager.h (+5-4)
  • (modified) clang/include/clang/Basic/ASTSourceDescriptor.h (+2-1)
  • (modified) clang/include/clang/Basic/AttrSubjectMatchRules.h (+2-1)
  • (modified) clang/include/clang/Basic/AttributeCommonInfo.h (+2-1)
  • (modified) clang/include/clang/Basic/Attributes.h (+2-1)
  • (modified) clang/include/clang/Basic/Builtins.h (+4-3)
  • (modified) clang/include/clang/Basic/CLWarnings.h (+2-1)
  • (modified) clang/include/clang/Basic/CharInfo.h (+2-1)
  • (modified) clang/include/clang/Basic/CodeGenOptions.h (+2-1)
  • (modified) clang/include/clang/Basic/Cuda.h (+11-10)
  • (modified) clang/include/clang/Basic/DarwinSDKInfo.h (+4-3)
  • (modified) clang/include/clang/Basic/Diagnostic.h (+18-17)
  • (modified) clang/include/clang/Basic/DiagnosticError.h (+2-1)
  • (modified) clang/include/clang/Basic/DiagnosticIDs.h (+2-1)
  • (modified) clang/include/clang/Basic/DiagnosticOptions.h (+3-2)
  • (modified) clang/include/clang/Basic/ExpressionTraits.h (+3-2)
  • (modified) clang/include/clang/Basic/FileEntry.h (+2-1)
  • (modified) clang/include/clang/Basic/FileManager.h (+2-1)
  • (modified) clang/include/clang/Basic/FileSystemStatCache.h (+3-2)
  • (modified) clang/include/clang/Basic/IdentifierTable.h (+9-8)
  • (modified) clang/include/clang/Basic/LangOptions.h (+4-3)
  • (modified) clang/include/clang/Basic/LangStandard.h (+4-3)
  • (modified) clang/include/clang/Basic/MakeSupport.h (+2-1)
  • (modified) clang/include/clang/Basic/Module.h (+3-2)
  • (modified) clang/include/clang/Basic/NoSanitizeList.h (+2-1)
  • (modified) clang/include/clang/Basic/ObjCRuntime.h (+3-2)
  • (modified) clang/include/clang/Basic/OpenCLOptions.h (+2-1)
  • (modified) clang/include/clang/Basic/OpenMPKinds.h (+27-26)
  • (modified) clang/include/clang/Basic/OperatorKinds.h (+2-1)
  • (modified) clang/include/clang/Basic/OperatorPrecedence.h (+2-1)
  • (modified) clang/include/clang/Basic/ParsedAttrInfo.h (+3-2)
  • (modified) clang/include/clang/Basic/PrettyStackTrace.h (+2-1)
  • (modified) clang/include/clang/Basic/ProfileList.h (+2-1)
  • (modified) clang/include/clang/Basic/SanitizerSpecialCaseList.h (+2-1)
  • (modified) clang/include/clang/Basic/Sanitizers.h (+10-9)
  • (modified) clang/include/clang/Basic/Sarif.h (+2-1)
  • (modified) clang/include/clang/Basic/SourceLocation.h (+5-4)
  • (modified) clang/include/clang/Basic/SourceManager.h (+6-5)
  • (modified) clang/include/clang/Basic/SourceManagerInternals.h (+2-1)
  • (modified) clang/include/clang/Basic/SourceMgrAdapter.h (+2-1)
  • (modified) clang/include/clang/Basic/Specifiers.h (+4-3)
  • (modified) clang/include/clang/Basic/Stack.h (+4-3)
  • (modified) clang/include/clang/Basic/SyncScope.h (+2-1)
  • (modified) clang/include/clang/Basic/TargetID.h (+7-6)
  • (modified) clang/include/clang/Basic/TargetInfo.h (+2-1)
  • (modified) clang/include/clang/Basic/TokenKinds.h (+7-6)
  • (modified) clang/include/clang/Basic/TypeTraits.h (+8-7)
  • (modified) clang/include/clang/Basic/Version.h (+10-9)
  • (modified) clang/include/clang/Basic/XRayInstr.h (+3-2)
  • (modified) clang/include/clang/Basic/XRayLists.h (+2-1)
  • (modified) clang/include/clang/CodeGen/BackendUtil.h (+4-3)
  • (modified) clang/include/clang/CodeGen/CGFunctionInfo.h (+4-3)
  • (modified) clang/include/clang/CodeGen/CodeGenABITypes.h (+21-20)
  • (modified) clang/include/clang/CodeGen/CodeGenAction.h (+8-7)
  • (modified) clang/include/clang/CodeGen/ConstantInitBuilder.h (+5-4)
  • (modified) clang/include/clang/CodeGen/ConstantInitFuture.h (+2-1)
  • (modified) clang/include/clang/CodeGen/ModuleBuilder.h (+3-2)
  • (modified) clang/include/clang/CodeGen/ObjectFilePCHContainerWriter.h (+2-1)
  • (modified) clang/include/clang/CodeGen/SwiftCallingConv.h (+15-14)
  • (modified) clang/include/clang/CrossTU/CrossTranslationUnit.h (+9-8)
  • (modified) clang/include/clang/Driver/Action.h (+29-28)
  • (modified) clang/include/clang/Driver/Compilation.h (+2-1)
  • (modified) clang/include/clang/Driver/Distro.h (+2-1)
  • (modified) clang/include/clang/Driver/Driver.h (+8-7)
  • (modified) clang/include/clang/Driver/Job.h (+4-3)
  • (modified) clang/include/clang/Driver/Multilib.h (+5-4)
  • (modified) clang/include/clang/Driver/MultilibBuilder.h (+3-2)
  • (modified) clang/include/clang/Driver/OffloadBundler.h (+5-4)
  • (modified) clang/include/clang/Driver/OptionUtils.h (+3-2)
  • (modified) clang/include/clang/Driver/Options.h (+2-1)
  • (modified) clang/include/clang/Driver/Phases.h (+2-1)
  • (modified) clang/include/clang/Driver/SanitizerArgs.h (+2-1)
  • (modified) clang/include/clang/Driver/Tool.h (+2-1)
  • (modified) clang/include/clang/Driver/ToolChain.h (+2-1)
  • (modified) clang/include/clang/Driver/Types.h (+26-25)
  • (modified) clang/include/clang/Driver/XRayArgs.h (+2-1)
  • (modified) clang/include/clang/Edit/Commit.h (+3-2)
  • (modified) clang/include/clang/Edit/EditedSource.h (+2-1)
  • (modified) clang/include/clang/Edit/EditsReceiver.h (+2-1)
  • (modified) clang/include/clang/Edit/Rewriters.h (+4-3)
  • (modified) clang/include/clang/ExtractAPI/API.h (+36-35)
  • (modified) clang/include/clang/ExtractAPI/APIIgnoresList.h (+3-2)
  • (modified) clang/include/clang/ExtractAPI/DeclarationFragments.h (+3-2)
  • (modified) clang/include/clang/ExtractAPI/ExtractAPIActionBase.h (+2-1)
  • (modified) clang/include/clang/ExtractAPI/FrontendActions.h (+3-2)
  • (modified) clang/include/clang/ExtractAPI/Serialization/SymbolGraphSerializer.h (+3-2)
  • (modified) clang/include/clang/ExtractAPI/TypedefUnderlyingTypeResolver.h (+2-1)
  • (modified) clang/include/clang/Format/Format.h (+36-35)
  • (modified) clang/include/clang/Frontend/ASTConsumers.h (+5-4)
  • (modified) clang/include/clang/Frontend/ASTUnit.h (+4-3)
  • (modified) clang/include/clang/Frontend/ChainedDiagnosticConsumer.h (+2-1)
  • (modified) clang/include/clang/Frontend/CompilerInstance.h (+2-1)
  • (modified) clang/include/clang/Frontend/CompilerInvocation.h (+10-9)
  • (modified) clang/include/clang/Frontend/DiagnosticRenderer.h (+3-2)
  • (modified) clang/include/clang/Frontend/FrontendAction.h (+6-5)
  • (modified) clang/include/clang/Frontend/FrontendActions.h (+27-26)
  • (modified) clang/include/clang/Frontend/FrontendOptions.h (+2-1)
  • (modified) clang/include/clang/Frontend/LayoutOverrideSource.h (+2-1)
  • (modified) clang/include/clang/Frontend/LogDiagnosticPrinter.h (+2-1)
  • (modified) clang/include/clang/Frontend/MultiplexConsumer.h (+3-2)
  • (modified) clang/include/clang/Frontend/PrecompiledPreamble.h (+7-6)
  • (modified) clang/include/clang/Frontend/SARIFDiagnostic.h (+2-1)
  • (modified) clang/include/clang/Frontend/SARIFDiagnosticPrinter.h (+2-1)
  • (modified) clang/include/clang/Frontend/SerializedDiagnosticPrinter.h (+2-1)
  • (modified) clang/include/clang/Frontend/SerializedDiagnosticReader.h (+4-3)
  • (modified) clang/include/clang/Frontend/TextDiagnostic.h (+2-1)
  • (modified) clang/include/clang/Frontend/TextDiagnosticBuffer.h (+2-1)
  • (modified) clang/include/clang/Frontend/TextDiagnosticPrinter.h (+2-1)
  • (modified) clang/include/clang/Frontend/Utils.h (+10-9)
  • (modified) clang/include/clang/Frontend/VerifyDiagnosticConsumer.h (+3-2)
  • (modified) clang/include/clang/FrontendTool/Utils.h (+3-2)
  • (modified) clang/include/clang/Index/CommentToXML.h (+2-1)
  • (modified) clang/include/clang/Index/IndexSymbol.h (+13-12)
  • (modified) clang/include/clang/Index/IndexingAction.h (+8-7)
  • (modified) clang/include/clang/Index/USRGeneration.h (+17-16)
  • (modified) clang/include/clang/IndexSerialization/SerializablePathCollection.h (+4-3)
  • (modified) clang/include/clang/InstallAPI/Context.h (+3-2)
  • (modified) clang/include/clang/InstallAPI/DirectoryScanner.h (+2-1)
  • (modified) clang/include/clang/InstallAPI/DylibVerifier.h (+3-2)
  • (modified) clang/include/clang/InstallAPI/FileList.h (+2-1)
  • (modified) clang/include/clang/InstallAPI/Frontend.h (+2-1)
  • (modified) clang/include/clang/InstallAPI/FrontendRecords.h (+2-1)
  • (modified) clang/include/clang/InstallAPI/HeaderFile.h (+6-5)
  • (modified) clang/include/clang/InstallAPI/Library.h (+2-1)
  • (modified) clang/include/clang/InstallAPI/Visitor.h (+2-1)
  • (modified) clang/include/clang/Interpreter/CodeCompletion.h (+2-1)
  • (modified) clang/include/clang/Interpreter/Interpreter.h (+3-2)
  • (modified) clang/include/clang/Lex/CodeCompletionHandler.h (+2-1)
  • (modified) clang/include/clang/Lex/DependencyDirectivesScanner.h (+3-2)
  • (modified) clang/include/clang/Lex/DirectoryLookup.h (+3-2)
  • (modified) clang/include/clang/Lex/ExternalPreprocessorSource.h (+2-1)
  • (modified) clang/include/clang/Lex/HeaderMap.h (+3-2)
  • (modified) clang/include/clang/Lex/HeaderSearch.h (+5-4)
  • (modified) clang/include/clang/Lex/Lexer.h (+2-1)
  • (modified) clang/include/clang/Lex/LiteralSupport.h (+7-6)
  • (modified) clang/include/clang/Lex/MacroArgs.h (+2-1)
  • (modified) clang/include/clang/Lex/MacroInfo.h (+5-4)
  • (modified) clang/include/clang/Lex/ModuleLoader.h (+2-1)
  • (modified) clang/include/clang/Lex/ModuleMap.h (+3-2)
  • (modified) clang/include/clang/Lex/PPCallbacks.h (+3-2)
  • (modified) clang/include/clang/Lex/PPConditionalDirectiveRecord.h (+2-1)
  • (modified) clang/include/clang/Lex/Pragma.h (+5-4)
  • (modified) clang/include/clang/Lex/PreprocessingRecord.h (+5-4)
  • (modified) clang/include/clang/Lex/Preprocessor.h (+4-3)
  • (modified) clang/include/clang/Lex/PreprocessorLexer.h (+2-1)
  • (modified) clang/include/clang/Lex/ScratchBuffer.h (+2-1)
  • (modified) clang/include/clang/Lex/Token.h (+2-1)
  • (modified) clang/include/clang/Lex/TokenConcatenation.h (+2-1)
  • (modified) clang/include/clang/Lex/TokenLexer.h (+2-1)
  • (modified) clang/include/clang/Parse/ParseAST.h (+3-2)
  • (modified) clang/include/clang/Parse/Parser.h (+13-12)
  • (modified) clang/include/clang/Parse/RAIIObjectsForParser.h (+2-1)
  • (modified) clang/include/clang/Rewrite/Core/HTMLRewrite.h (+10-9)
  • (modified) clang/include/clang/Rewrite/Core/Rewriter.h (+2-1)
  • (modified) clang/include/clang/Rewrite/Core/TokenRewriter.h (+2-1)
  • (modified) clang/include/clang/Rewrite/Frontend/ASTConsumers.h (+4-3)
  • (modified) clang/include/clang/Rewrite/Frontend/FixItRewriter.h (+3-2)
  • (modified) clang/include/clang/Rewrite/Frontend/FrontendActions.h (+8-7)
  • (modified) clang/include/clang/Rewrite/Frontend/Rewriters.h (+4-3)
  • (modified) clang/include/clang/Sema/AnalysisBasedWarnings.h (+3-2)
  • (modified) clang/include/clang/Sema/CodeCompleteConsumer.h (+20-19)
  • (modified) clang/include/clang/Sema/DeclSpec.h (+7-6)
  • (modified) clang/include/clang/Sema/DelayedDiagnostic.h (+2-1)
  • (modified) clang/include/clang/Sema/ExternalSemaSource.h (+2-1)
diff --git a/clang/include/clang/APINotes/APINotesManager.h b/clang/include/clang/APINotes/APINotesManager.h
index 98592438e90eab..05d7930d3a2e7f 100644
--- a/clang/include/clang/APINotes/APINotesManager.h
+++ b/clang/include/clang/APINotes/APINotesManager.h
@@ -10,6 +10,7 @@
 #define LLVM_CLANG_APINOTES_APINOTESMANAGER_H
 
 #include "clang/Basic/SourceLocation.h"
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/ArrayRef.h"
 #include "llvm/ADT/DenseMap.h"
 #include "llvm/ADT/PointerUnion.h"
@@ -41,7 +42,7 @@ class APINotesReader;
 /// external API notes files that correspond to a given header. Its primary
 /// operation is \c findAPINotes(), which finds the API notes reader that
 /// provides information about the declarations at that location.
-class APINotesManager {
+class CLANG_ABI APINotesManager {
   using ReaderEntry = llvm::PointerUnion<DirectoryEntryRef, APINotesReader *>;
 
   SourceManager &SM;
diff --git a/clang/include/clang/APINotes/APINotesReader.h b/clang/include/clang/APINotes/APINotesReader.h
index baf63340640242..58ee2857c7930f 100644
--- a/clang/include/clang/APINotes/APINotesReader.h
+++ b/clang/include/clang/APINotes/APINotesReader.h
@@ -16,6 +16,7 @@
 #define LLVM_CLANG_APINOTES_READER_H
 
 #include "clang/APINotes/Types.h"
+#include "clang/Support/Compiler.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/VersionTuple.h"
 #include <memory>
@@ -25,7 +26,7 @@ namespace api_notes {
 
 /// A class that reads API notes data from a binary file that was written by
 /// the \c APINotesWriter.
-class APINotesReader {
+class CLANG_ABI APINotesReader {
   class Implementation;
   std::unique_ptr<Implementation> Implementation;
 
diff --git a/clang/include/clang/APINotes/APINotesWriter.h b/clang/include/clang/APINotes/APINotesWriter.h
index 3cc16c3d959faf..b8b45a89dcfc8b 100644
--- a/clang/include/clang/APINotes/APINotesWriter.h
+++ b/clang/include/clang/APINotes/APINotesWriter.h
@@ -16,6 +16,7 @@
 #define LLVM_CLANG_APINOTES_WRITER_H
 
 #include "clang/APINotes/Types.h"
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/StringRef.h"
 #include "llvm/Support/VersionTuple.h"
 #include "llvm/Support/raw_ostream.h"
@@ -29,7 +30,7 @@ namespace api_notes {
 
 /// A class that writes API notes data to a binary representation that can be
 /// read by the \c APINotesReader.
-class APINotesWriter {
+class CLANG_ABI APINotesWriter {
   class Implementation;
   std::unique_ptr<Implementation> Implementation;
 
diff --git a/clang/include/clang/APINotes/APINotesYAMLCompiler.h b/clang/include/clang/APINotes/APINotesYAMLCompiler.h
index 9c24ed85b6a124..3954cf347e8244 100644
--- a/clang/include/clang/APINotes/APINotesYAMLCompiler.h
+++ b/clang/include/clang/APINotes/APINotesYAMLCompiler.h
@@ -9,6 +9,7 @@
 #ifndef LLVM_CLANG_APINOTES_APINOTESYAMLCOMPILER_H
 #define LLVM_CLANG_APINOTES_APINOTESYAMLCOMPILER_H
 
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/StringRef.h"
 #include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/raw_ostream.h"
@@ -22,10 +23,10 @@ namespace api_notes {
 /// Parses the APINotes YAML content and writes the representation back to the
 /// specified stream.  This provides a means of testing the YAML processing of
 /// the APINotes format.
-bool parseAndDumpAPINotes(llvm::StringRef YI, llvm::raw_ostream &OS);
+CLANG_ABI bool parseAndDumpAPINotes(llvm::StringRef YI, llvm::raw_ostream &OS);
 
 /// Converts API notes from YAML format to binary format.
-bool compileAPINotes(llvm::StringRef YAMLInput, const FileEntry *SourceFile,
+CLANG_ABI bool compileAPINotes(llvm::StringRef YAMLInput, const FileEntry *SourceFile,
                      llvm::raw_ostream &OS,
                      llvm::SourceMgr::DiagHandlerTy DiagHandler = nullptr,
                      void *DiagHandlerCtxt = nullptr);
diff --git a/clang/include/clang/APINotes/Types.h b/clang/include/clang/APINotes/Types.h
index 89889910d1a073..574406586c4674 100644
--- a/clang/include/clang/APINotes/Types.h
+++ b/clang/include/clang/APINotes/Types.h
@@ -10,6 +10,7 @@
 #define LLVM_CLANG_APINOTES_TYPES_H
 
 #include "clang/Basic/Specifiers.h"
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/ArrayRef.h"
 #include "llvm/ADT/StringRef.h"
 #include <climits>
@@ -49,7 +50,7 @@ enum class SwiftNewTypeKind {
 /// Describes API notes data for any entity.
 ///
 /// This is used as the base of all API notes.
-class CommonEntityInfo {
+class CLANG_ABI CommonEntityInfo {
 public:
   /// Message to use when this entity is unavailable.
   std::string UnavailableMsg;
@@ -132,7 +133,7 @@ inline bool operator!=(const CommonEntityInfo &LHS,
 }
 
 /// Describes API notes for types.
-class CommonTypeInfo : public CommonEntityInfo {
+class CLANG_ABI CommonTypeInfo : public CommonEntityInfo {
   /// The Swift type to which a given type is bridged.
   ///
   /// Reflects the swift_bridge attribute.
@@ -194,7 +195,7 @@ inline bool operator!=(const CommonTypeInfo &LHS, const CommonTypeInfo &RHS) {
 
 /// Describes API notes data for an Objective-C class or protocol or a C++
 /// namespace.
-class ContextInfo : public CommonTypeInfo {
+class CLANG_ABI ContextInfo : public CommonTypeInfo {
   /// Whether this class has a default nullability.
   LLVM_PREFERRED_TYPE(bool)
   unsigned HasDefaultNullability : 1;
@@ -301,7 +302,7 @@ inline bool operator!=(const ContextInfo &LHS, const ContextInfo &RHS) {
 }
 
 /// API notes for a variable/property.
-class VariableInfo : public CommonEntityInfo {
+class CLANG_ABI VariableInfo : public CommonEntityInfo {
   /// Whether this property has been audited for nullability.
   LLVM_PREFERRED_TYPE(bool)
   unsigned NullabilityAudited : 1;
@@ -358,7 +359,7 @@ inline bool operator!=(const VariableInfo &LHS, const VariableInfo &RHS) {
 }
 
 /// Describes API notes data for an Objective-C property.
-class ObjCPropertyInfo : public VariableInfo {
+class CLANG_ABI ObjCPropertyInfo : public VariableInfo {
   LLVM_PREFERRED_TYPE(bool)
   unsigned SwiftImportAsAccessorsSpecified : 1;
   LLVM_PREFERRED_TYPE(bool)
@@ -416,7 +417,7 @@ inline bool operator!=(const ObjCPropertyInfo &LHS,
 }
 
 /// Describes a function or method parameter.
-class ParamInfo : public VariableInfo {
+class CLANG_ABI ParamInfo : public VariableInfo {
   /// Whether noescape was specified.
   LLVM_PREFERRED_TYPE(bool)
   unsigned NoEscapeSpecified : 1;
@@ -486,7 +487,7 @@ inline bool operator!=(const ParamInfo &LHS, const ParamInfo &RHS) {
 }
 
 /// API notes for a function or method.
-class FunctionInfo : public CommonEntityInfo {
+class CLANG_ABI FunctionInfo : public CommonEntityInfo {
 private:
   static constexpr const uint64_t NullabilityKindMask = 0x3;
   static constexpr const unsigned NullabilityKindSize = 2;
@@ -606,7 +607,7 @@ inline bool operator!=(const FunctionInfo &LHS, const FunctionInfo &RHS) {
 }
 
 /// Describes API notes data for an Objective-C method.
-class ObjCMethodInfo : public FunctionInfo {
+class CLANG_ABI ObjCMethodInfo : public FunctionInfo {
 public:
   /// Whether this is a designated initializer of its class.
   LLVM_PREFERRED_TYPE(bool)
@@ -675,7 +676,7 @@ class EnumConstantInfo : public CommonEntityInfo {
 };
 
 /// Describes API notes data for a tag.
-class TagInfo : public CommonTypeInfo {
+class CLANG_ABI TagInfo : public CommonTypeInfo {
   LLVM_PREFERRED_TYPE(bool)
   unsigned HasFlagEnum : 1;
   LLVM_PREFERRED_TYPE(bool)
@@ -765,7 +766,7 @@ inline bool operator!=(const TagInfo &LHS, const TagInfo &RHS) {
 }
 
 /// Describes API notes data for a typedef.
-class TypedefInfo : public CommonTypeInfo {
+class CLANG_ABI TypedefInfo : public CommonTypeInfo {
 public:
   std::optional<SwiftNewTypeKind> SwiftWrapper;
 
diff --git a/clang/include/clang/ARCMigrate/ARCMT.h b/clang/include/clang/ARCMigrate/ARCMT.h
index 2b950e3d2cc2bf..dc078101e371ff 100644
--- a/clang/include/clang/ARCMigrate/ARCMT.h
+++ b/clang/include/clang/ARCMigrate/ARCMT.h
@@ -12,6 +12,7 @@
 #include "clang/ARCMigrate/FileRemapper.h"
 #include "clang/Basic/SourceLocation.h"
 #include "clang/Frontend/CompilerInvocation.h"
+#include "clang/Support/Compiler.h"
 
 namespace clang {
   class ASTContext;
@@ -37,7 +38,7 @@ namespace arcmt {
 /// the pre-migration ARC diagnostics.
 ///
 /// \returns false if no error is produced, true otherwise.
-bool
+CLANG_ABI bool
 checkForManualIssues(CompilerInvocation &CI, const FrontendInputFile &Input,
                      std::shared_ptr<PCHContainerOperations> PCHContainerOps,
                      DiagnosticConsumer *DiagClient,
@@ -48,7 +49,7 @@ checkForManualIssues(CompilerInvocation &CI, const FrontendInputFile &Input,
 /// applies automatic modifications to source files to conform to ARC.
 ///
 /// \returns false if no error is produced, true otherwise.
-bool
+CLANG_ABI bool
 applyTransformations(CompilerInvocation &origCI,
                      const FrontendInputFile &Input,
                      std::shared_ptr<PCHContainerOperations> PCHContainerOps,
@@ -65,7 +66,7 @@ applyTransformations(CompilerInvocation &origCI,
 /// the pre-migration ARC diagnostics.
 ///
 /// \returns false if no error is produced, true otherwise.
-bool migrateWithTemporaryFiles(
+CLANG_ABI bool migrateWithTemporaryFiles(
     CompilerInvocation &origCI, const FrontendInputFile &Input,
     std::shared_ptr<PCHContainerOperations> PCHContainerOps,
     DiagnosticConsumer *DiagClient, StringRef outputDir,
@@ -75,7 +76,7 @@ bool migrateWithTemporaryFiles(
 /// migrateWithTemporaryFiles produced.
 ///
 /// \returns false if no error is produced, true otherwise.
-bool getFileRemappings(std::vector<std::pair<std::string,std::string> > &remap,
+CLANG_ABI bool getFileRemappings(std::vector<std::pair<std::string,std::string> > &remap,
                        StringRef outputDir,
                        DiagnosticConsumer *DiagClient);
 
@@ -83,17 +84,17 @@ bool getFileRemappings(std::vector<std::pair<std::string,std::string> > &remap,
 /// info.
 ///
 /// \returns false if no error is produced, true otherwise.
-bool getFileRemappingsFromFileList(
+CLANG_ABI bool getFileRemappingsFromFileList(
                         std::vector<std::pair<std::string,std::string> > &remap,
                         ArrayRef<StringRef> remapFiles,
                         DiagnosticConsumer *DiagClient);
 
 typedef void (*TransformFn)(MigrationPass &pass);
 
-std::vector<TransformFn> getAllTransformations(LangOptions::GCMode OrigGCMode,
+CLANG_ABI std::vector<TransformFn> getAllTransformations(LangOptions::GCMode OrigGCMode,
                                                bool NoFinalizeRemoval);
 
-class MigrationProcess {
+class CLANG_ABI MigrationProcess {
   CompilerInvocation OrigCI;
   std::shared_ptr<PCHContainerOperations> PCHContainerOps;
   DiagnosticConsumer *DiagClient;
@@ -107,7 +108,7 @@ class MigrationProcess {
                    DiagnosticConsumer *diagClient,
                    StringRef outputDir = StringRef());
 
-  class RewriteListener {
+  class CLANG_ABI RewriteListener {
   public:
     virtual ~RewriteListener();
 
diff --git a/clang/include/clang/ARCMigrate/ARCMTActions.h b/clang/include/clang/ARCMigrate/ARCMTActions.h
index 714f4b33db446b..50c6142078f5c8 100644
--- a/clang/include/clang/ARCMigrate/ARCMTActions.h
+++ b/clang/include/clang/ARCMigrate/ARCMTActions.h
@@ -11,12 +11,13 @@
 
 #include "clang/ARCMigrate/FileRemapper.h"
 #include "clang/Frontend/FrontendAction.h"
+#include "clang/Support/Compiler.h"
 #include <memory>
 
 namespace clang {
 namespace arcmt {
 
-class CheckAction : public WrapperFrontendAction {
+class CLANG_ABI CheckAction : public WrapperFrontendAction {
 protected:
   bool BeginInvocation(CompilerInstance &CI) override;
 
@@ -24,7 +25,7 @@ class CheckAction : public WrapperFrontendAction {
   CheckAction(std::unique_ptr<FrontendAction> WrappedAction);
 };
 
-class ModifyAction : public WrapperFrontendAction {
+class CLANG_ABI ModifyAction : public WrapperFrontendAction {
 protected:
   bool BeginInvocation(CompilerInstance &CI) override;
 
@@ -32,7 +33,7 @@ class ModifyAction : public WrapperFrontendAction {
   ModifyAction(std::unique_ptr<FrontendAction> WrappedAction);
 };
 
-class MigrateSourceAction : public ASTFrontendAction {
+class CLANG_ABI MigrateSourceAction : public ASTFrontendAction {
   FileRemapper Remapper;
 protected:
   bool BeginInvocation(CompilerInstance &CI) override;
@@ -40,7 +41,7 @@ class MigrateSourceAction : public ASTFrontendAction {
                                                  StringRef InFile) override;
 };
 
-class MigrateAction : public WrapperFrontendAction {
+class CLANG_ABI MigrateAction : public WrapperFrontendAction {
   std::string MigrateDir;
   std::string PlistOut;
   bool EmitPremigrationARCErrors;
@@ -55,7 +56,7 @@ class MigrateAction : public WrapperFrontendAction {
 };
 
 /// Migrates to modern ObjC syntax.
-class ObjCMigrateAction : public WrapperFrontendAction {
+class CLANG_ABI ObjCMigrateAction : public WrapperFrontendAction {
   std::string MigrateDir;
   unsigned    ObjCMigAction;
   FileRemapper Remapper;
diff --git a/clang/include/clang/ARCMigrate/FileRemapper.h b/clang/include/clang/ARCMigrate/FileRemapper.h
index afcee363516a21..3c9f706a75cf38 100644
--- a/clang/include/clang/ARCMigrate/FileRemapper.h
+++ b/clang/include/clang/ARCMigrate/FileRemapper.h
@@ -11,6 +11,7 @@
 
 #include "clang/Basic/FileEntry.h"
 #include "clang/Basic/LLVM.h"
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/DenseMap.h"
 #include "llvm/ADT/STLExtras.h"
 #include "llvm/ADT/StringRef.h"
@@ -29,7 +30,7 @@ namespace clang {
 
 namespace arcmt {
 
-class FileRemapper {
+class CLANG_ABI FileRemapper {
   // FIXME: Reuse the same FileManager for multiple ASTContexts.
   std::unique_ptr<FileManager> FileMgr;
 
diff --git a/clang/include/clang/AST/APNumericStorage.h b/clang/include/clang/AST/APNumericStorage.h
index 95eddbcd86e839..ae634d46dfea2b 100644
--- a/clang/include/clang/AST/APNumericStorage.h
+++ b/clang/include/clang/AST/APNumericStorage.h
@@ -9,6 +9,7 @@
 #ifndef LLVM_CLANG_AST_APNUMERICSTORAGE_H
 #define LLVM_CLANG_AST_APNUMERICSTORAGE_H
 
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/APFloat.h"
 #include "llvm/ADT/APInt.h"
 
@@ -23,7 +24,7 @@ class ASTContext;
 /// to allocate IntegerLiteral/FloatingLiteral nodes the memory associated with
 /// the APFloat/APInt values will never get freed. APNumericStorage uses
 /// ASTContext's allocator for memory allocation.
-class APNumericStorage {
+class CLANG_ABI APNumericStorage {
   union {
     uint64_t VAL;   ///< Used to store the <= 64 bits integer value.
     uint64_t *pVal; ///< Used to store the >64 bits integer value.
diff --git a/clang/include/clang/AST/APValue.h b/clang/include/clang/AST/APValue.h
index c4206b73b11562..fc6baf92a90202 100644
--- a/clang/include/clang/AST/APValue.h
+++ b/clang/include/clang/AST/APValue.h
@@ -14,6 +14,7 @@
 #define LLVM_CLANG_AST_APVALUE_H
 
 #include "clang/Basic/LLVM.h"
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/APFixedPoint.h"
 #include "llvm/ADT/APFloat.h"
 #include "llvm/ADT/APSInt.h"
@@ -41,7 +42,7 @@ template <typename T> class BasicReaderBase;
   class QualType;
 
 /// Symbolic representation of typeid(T) for some type T.
-class TypeInfoLValue {
+class CLANG_ABI TypeInfoLValue {
   const Type *T;
 
 public:
@@ -119,7 +120,7 @@ namespace clang {
 /// APValue - This class implements a discriminated union of [uninitialized]
 /// [APSInt] [APFloat], [Complex APSInt] [Complex APFloat], [Expr + Offset],
 /// [Vector: N * APValue], [Array: N * APValue]
-class APValue {
+class CLANG_ABI APValue {
   typedef llvm::APFixedPoint APFixedPoint;
   typedef llvm::APSInt APSInt;
   typedef llvm::APFloat APFloat;
@@ -143,7 +144,7 @@ class APValue {
     AddrLabelDiff
   };
 
-  class LValueBase {
+  class CLANG_ABI LValueBase {
     typedef llvm::PointerUnion<const ValueDecl *, const Expr *, TypeInfoLValue,
                                DynamicAllocLValue>
         PtrTy;
@@ -179,11 +180,11 @@ class APValue {
 
     QualType getType() const;
 
-    friend bool operator==(const LValueBase &LHS, const LValueBase &RHS);
+    friend CLANG_ABI bool operator==(const LValueBase &LHS, const LValueBase &RHS);
     friend bool operator!=(const LValueBase &LHS, const LValueBase &RHS) {
       return !(LHS == RHS);
     }
-    friend llvm::hash_code hash_value(const LValueBase &Base);
+    friend CLANG_ABI llvm::hash_code hash_value(const LValueBase &Base);
     friend struct llvm::DenseMapInfo<LValueBase>;
 
   private:
@@ -205,7 +206,7 @@ class APValue {
   typedef llvm::PointerIntPair<const Decl *, 1, bool> BaseOrMemberType;
 
   /// A non-discriminated union of a base, field, or array index.
-  class LValuePathEntry {
+  class CLANG_ABI LValuePathEntry {
     static_assert(sizeof(uintptr_t) <= sizeof(uint64_t),
                   "pointer doesn't fit in 64 bits?");
     uint64_t Value;
@@ -237,7 +238,7 @@ class APValue {
       return llvm::hash_value(A.Value);
     }
   };
-  class LValuePathSerializationHelper {
+  class CLANG_ABI LValuePathSerializationHelper {
     const void *Ty;
 
   public:
@@ -274,7 +275,7 @@ class APValue {
     Vec &operator=(const Vec &) = delete;
     ~Vec() { delete[] Elts; }
   };
-  struct Arr {
+  struct CLANG_ABI Arr {
     APValue *Elts;
     unsigned NumElts, ArrSize;
     Arr(unsigned NumElts, unsigned ArrSize);
@@ -282,7 +283,7 @@ class APValue {
     Arr &operator=(const Arr &) = delete;
     ~Arr();
   };
-  struct StructData {
+  struct CLANG_ABI StructData {
     APValue *Elts;
     unsigned NumBases;
     unsigned NumFields;
@@ -291,7 +292,7 @@ class APValue {
     StructData &operator=(const StructData &) = delete;
     ~StructData();
   };
-  struct UnionData {
+  struct CLANG_ABI UnionData {
     const FieldDecl *Field;
     APValue *Value;
     UnionData();
@@ -702,7 +703,7 @@ class APValue {
 } // end namespace clang.
 
 namespace llvm {
-template<> struct DenseMapInfo<clang::APValue::LValueBase> {
+template<> struct CLANG_ABI DenseMapInfo<clang::APValue::LValueBase> {
   static clang::APValue::LValueBase getEmptyKey();
   static clang::APValue::LValueBase getTombstoneKey();
   static unsigned getHashValue(const clang::APValue::LValueBase &Base);
diff --git a/clang/include/clang/AST/ASTConcept.h b/clang/include/clang/AST/ASTConcept.h
index 00500e214f4ce6..59b0a8e9d96a9d 100644
--- a/clang/include/clang/AST/ASTConcept.h
+++ b/clang/include/clang/AST/ASTConcept.h
@@ -18,6 +18,7 @@
 #include "clang/AST/NestedNameSpecifier.h"
 #include "clang/AST/TemplateBase.h"
 #include "clang/Basic/SourceLocation.h"
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/FoldingSet.h"
 #include "llvm/ADT/PointerUnion.h"
 #include "llvm/ADT/SmallVector.h"
@@ -32,7 +33,7 @@ struct PrintingPolicy;
 
 /// The result of a constraint satisfaction check, containing the necessary
 /// information to diagnose an unsatisfied constraint.
-class ConstraintSatisfaction : public llvm::FoldingSetNode {
+class CLANG_ABI ConstraintSatisfaction : public llvm::FoldingSetNode {
   // The template-like entity that 'owns' the constraint checked here (can be a
   // constrained entity or a concept).
   const NamedDecl *ConstraintOwner = nullptr;
@@ -84,7 +85,7 @@ using UnsatisfiedConstraintRecord =
 /// necessary information to diagnose an unsatisfied constraint.
 ///
 /// This is safe to store in an AST node, as opposed to ConstraintSatisfaction.
-struct ASTConstraintSatisfaction final :
+struct CLANG_ABI ASTConstraintSatisfaction final :
     llvm::TrailingObjects<ASTConstraintSatisfaction,
                           UnsatisfiedConstraintRecord> {
   std::size_t NumRecords;
@@ -121,7 +122,7 @@ struct ASTConstraintSatisfaction final :
 ///
 ///   template <std::derives_from<Expr> T> void dump();
 ///             ~~~~~~~~~~~~~~~~~~~~~~~ (in TemplateTypeParmDecl)
-class ConceptReference {
+class CLANG_ABI ConceptReference {
   // \brief The optional nested name specifier used when naming the concept.
   NestedNameSpecifierLoc NestedNameSpec;
 
diff --git a/clang/include/clang/AST/ASTConsumer.h b/clang/include/clang/AST/ASTConsumer.h
index 447f2592d23595..735c7e549f5cac 100644
--- a/clang/include/clang/AST/ASTConsumer.h
+++ b/clang/include/clang/AST/ASTConsumer.h
@@ -13,6 +13,7 @@
 #ifndef LLVM_CLANG_AST_ASTCONSUMER_H
 #define LLVM_CLANG_AST_ASTCONSUMER_H
 
+#include "clang/Support/Compiler.h"
 namespace clang {
   class ASTContext;
   class CXXMethodDecl;
@@ -31,7 +32,7 @@ namespace clang {
 /// ASTCons...
[truncated]

@llvmbot
Copy link
Collaborator

llvmbot commented Sep 23, 2024

@llvm/pr-subscribers-clang

Author: Thomas Fransham (fsfod)

Changes

The visibility macros generated here are created by a ids clang tooling based tool that @compnerd wrote and I've extended.
To reduce the numbers of exports and to avoid explicitly deleting more special members than necessary for MSVC only classes with out of line members or static variables have visibility macros added to them. I've included the config file that used to drive the tool for the Clang codebase to add some insight files are or aren't modified. I skipped running clang-format over most of changes just so the diffs are more readable and some files some weird indenting that clang-format to reformat the whole file.
These changes also depend on the macros to be added in #108276.


Patch is 1.09 MiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/109702.diff

501 Files Affected:

  • (modified) clang/include/clang/APINotes/APINotesManager.h (+2-1)
  • (modified) clang/include/clang/APINotes/APINotesReader.h (+2-1)
  • (modified) clang/include/clang/APINotes/APINotesWriter.h (+2-1)
  • (modified) clang/include/clang/APINotes/APINotesYAMLCompiler.h (+3-2)
  • (modified) clang/include/clang/APINotes/Types.h (+11-10)
  • (modified) clang/include/clang/ARCMigrate/ARCMT.h (+9-8)
  • (modified) clang/include/clang/ARCMigrate/ARCMTActions.h (+6-5)
  • (modified) clang/include/clang/ARCMigrate/FileRemapper.h (+2-1)
  • (modified) clang/include/clang/AST/APNumericStorage.h (+2-1)
  • (modified) clang/include/clang/AST/APValue.h (+12-11)
  • (modified) clang/include/clang/AST/ASTConcept.h (+4-3)
  • (modified) clang/include/clang/AST/ASTConsumer.h (+2-1)
  • (modified) clang/include/clang/AST/ASTContext.h (+5-4)
  • (modified) clang/include/clang/AST/ASTContextAllocate.h (+5-4)
  • (modified) clang/include/clang/AST/ASTDiagnostic.h (+3-2)
  • (modified) clang/include/clang/AST/ASTDumper.h (+2-1)
  • (modified) clang/include/clang/AST/ASTImportError.h (+2-1)
  • (modified) clang/include/clang/AST/ASTImporter.h (+3-2)
  • (modified) clang/include/clang/AST/ASTImporterLookupTable.h (+2-1)
  • (modified) clang/include/clang/AST/ASTMutationListener.h (+2-1)
  • (modified) clang/include/clang/AST/ASTStructuralEquivalence.h (+2-1)
  • (modified) clang/include/clang/AST/ASTTypeTraits.h (+3-2)
  • (modified) clang/include/clang/AST/ASTUnresolvedSet.h (+2-1)
  • (modified) clang/include/clang/AST/Attr.h (+2-1)
  • (modified) clang/include/clang/AST/Availability.h (+2-1)
  • (modified) clang/include/clang/AST/CXXInheritance.h (+3-2)
  • (modified) clang/include/clang/AST/Comment.h (+7-6)
  • (modified) clang/include/clang/AST/CommentBriefParser.h (+2-1)
  • (modified) clang/include/clang/AST/CommentCommandTraits.h (+2-1)
  • (modified) clang/include/clang/AST/CommentLexer.h (+3-2)
  • (modified) clang/include/clang/AST/CommentParser.h (+2-1)
  • (modified) clang/include/clang/AST/CommentSema.h (+2-1)
  • (modified) clang/include/clang/AST/ComparisonCategories.h (+5-4)
  • (modified) clang/include/clang/AST/ComputeDependence.h (+86-85)
  • (modified) clang/include/clang/AST/DataCollection.h (+2-1)
  • (modified) clang/include/clang/AST/Decl.h (+35-34)
  • (modified) clang/include/clang/AST/DeclBase.h (+5-4)
  • (modified) clang/include/clang/AST/DeclCXX.h (+33-32)
  • (modified) clang/include/clang/AST/DeclContextInternals.h (+2-1)
  • (modified) clang/include/clang/AST/DeclFriend.h (+2-1)
  • (modified) clang/include/clang/AST/DeclGroup.h (+2-1)
  • (modified) clang/include/clang/AST/DeclID.h (+3-2)
  • (modified) clang/include/clang/AST/DeclObjC.h (+20-19)
  • (modified) clang/include/clang/AST/DeclOpenMP.h (+7-6)
  • (modified) clang/include/clang/AST/DeclTemplate.h (+25-24)
  • (modified) clang/include/clang/AST/DeclarationName.h (+7-6)
  • (modified) clang/include/clang/AST/DependentDiagnostic.h (+2-1)
  • (modified) clang/include/clang/AST/Expr.h (+40-39)
  • (modified) clang/include/clang/AST/ExprCXX.h (+44-43)
  • (modified) clang/include/clang/AST/ExprConcepts.h (+7-6)
  • (modified) clang/include/clang/AST/ExprObjC.h (+6-5)
  • (modified) clang/include/clang/AST/ExprOpenMP.h (+3-2)
  • (modified) clang/include/clang/AST/ExternalASTMerger.h (+2-1)
  • (modified) clang/include/clang/AST/ExternalASTSource.h (+2-1)
  • (modified) clang/include/clang/AST/FormatString.h (+13-12)
  • (modified) clang/include/clang/AST/JSONNodeDumper.h (+3-2)
  • (modified) clang/include/clang/AST/LambdaCapture.h (+2-1)
  • (modified) clang/include/clang/AST/LocInfoType.h (+2-1)
  • (modified) clang/include/clang/AST/Mangle.h (+5-4)
  • (modified) clang/include/clang/AST/MangleNumberingContext.h (+2-1)
  • (modified) clang/include/clang/AST/NSAPI.h (+2-1)
  • (modified) clang/include/clang/AST/NestedNameSpecifier.h (+4-3)
  • (modified) clang/include/clang/AST/ODRDiagsEmitter.h (+2-1)
  • (modified) clang/include/clang/AST/ODRHash.h (+3-2)
  • (modified) clang/include/clang/AST/OSLog.h (+2-1)
  • (modified) clang/include/clang/AST/OpenACCClause.h (+34-33)
  • (modified) clang/include/clang/AST/OpenMPClause.h (+58-57)
  • (modified) clang/include/clang/AST/ParentMap.h (+2-1)
  • (modified) clang/include/clang/AST/ParentMapContext.h (+2-1)
  • (modified) clang/include/clang/AST/PrettyDeclStackTrace.h (+2-1)
  • (modified) clang/include/clang/AST/PrettyPrinter.h (+2-1)
  • (modified) clang/include/clang/AST/QualTypeNames.h (+3-2)
  • (modified) clang/include/clang/AST/Randstruct.h (+2-1)
  • (modified) clang/include/clang/AST/RawCommentList.h (+3-2)
  • (modified) clang/include/clang/AST/RecordLayout.h (+2-1)
  • (modified) clang/include/clang/AST/Redeclarable.h (+2-1)
  • (modified) clang/include/clang/AST/SelectorLocationsKind.h (+5-4)
  • (modified) clang/include/clang/AST/Stmt.h (+22-21)
  • (modified) clang/include/clang/AST/StmtCXX.h (+5-4)
  • (modified) clang/include/clang/AST/StmtIterator.h (+2-1)
  • (modified) clang/include/clang/AST/StmtObjC.h (+3-2)
  • (modified) clang/include/clang/AST/StmtOpenACC.h (+3-2)
  • (modified) clang/include/clang/AST/StmtOpenMP.h (+80-79)
  • (modified) clang/include/clang/AST/TemplateBase.h (+7-6)
  • (modified) clang/include/clang/AST/TemplateName.h (+6-5)
  • (modified) clang/include/clang/AST/TextNodeDumper.h (+3-2)
  • (modified) clang/include/clang/AST/Type.h (+71-70)
  • (modified) clang/include/clang/AST/TypeLoc.h (+32-31)
  • (modified) clang/include/clang/AST/VTTBuilder.h (+2-1)
  • (modified) clang/include/clang/AST/VTableBuilder.h (+5-4)
  • (modified) clang/include/clang/ASTMatchers/ASTMatchFinder.h (+5-4)
  • (modified) clang/include/clang/ASTMatchers/ASTMatchers.h (+231-230)
  • (modified) clang/include/clang/ASTMatchers/ASTMatchersInternal.h (+14-13)
  • (modified) clang/include/clang/ASTMatchers/Dynamic/Diagnostics.h (+5-4)
  • (modified) clang/include/clang/ASTMatchers/Dynamic/Parser.h (+4-3)
  • (modified) clang/include/clang/ASTMatchers/Dynamic/Registry.h (+3-2)
  • (modified) clang/include/clang/ASTMatchers/Dynamic/VariantValue.h (+6-5)
  • (modified) clang/include/clang/ASTMatchers/GtestMatchers.h (+9-8)
  • (modified) clang/include/clang/Analysis/Analyses/CFGReachabilityAnalysis.h (+2-1)
  • (modified) clang/include/clang/Analysis/Analyses/CalledOnceCheck.h (+2-1)
  • (modified) clang/include/clang/Analysis/Analyses/Consumed.h (+5-4)
  • (modified) clang/include/clang/Analysis/Analyses/Dominators.h (+4-3)
  • (modified) clang/include/clang/Analysis/Analyses/ExprMutationAnalyzer.h (+3-2)
  • (modified) clang/include/clang/Analysis/Analyses/IntervalPartition.h (+6-5)
  • (modified) clang/include/clang/Analysis/Analyses/LiveVariables.h (+5-4)
  • (modified) clang/include/clang/Analysis/Analyses/PostOrderCFGView.h (+3-2)
  • (modified) clang/include/clang/Analysis/Analyses/ReachableCode.h (+4-3)
  • (modified) clang/include/clang/Analysis/Analyses/ThreadSafety.h (+5-4)
  • (modified) clang/include/clang/Analysis/Analyses/ThreadSafetyCommon.h (+2-1)
  • (modified) clang/include/clang/Analysis/Analyses/ThreadSafetyLogical.h (+2-1)
  • (modified) clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h (+9-8)
  • (modified) clang/include/clang/Analysis/Analyses/ThreadSafetyUtil.h (+2-1)
  • (modified) clang/include/clang/Analysis/Analyses/UninitializedValues.h (+3-2)
  • (modified) clang/include/clang/Analysis/Analyses/UnsafeBufferUsage.h (+5-4)
  • (modified) clang/include/clang/Analysis/AnalysisDeclContext.h (+8-7)
  • (modified) clang/include/clang/Analysis/BodyFarm.h (+2-1)
  • (modified) clang/include/clang/Analysis/CFG.h (+7-6)
  • (modified) clang/include/clang/Analysis/CFGStmtMap.h (+2-1)
  • (modified) clang/include/clang/Analysis/CallGraph.h (+3-2)
  • (modified) clang/include/clang/Analysis/CloneDetection.h (+11-10)
  • (modified) clang/include/clang/Analysis/CodeInjector.h (+2-1)
  • (modified) clang/include/clang/Analysis/ConstructionContext.h (+4-3)
  • (modified) clang/include/clang/Analysis/DomainSpecific/CocoaConventions.h (+5-4)
  • (modified) clang/include/clang/Analysis/DomainSpecific/ObjCNoReturn.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/ASTOps.h (+8-7)
  • (modified) clang/include/clang/Analysis/FlowSensitive/AdornedCFG.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Arena.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/CNFFormula.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/DataflowAnalysis.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/DataflowAnalysisContext.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/DataflowEnvironment.h (+4-3)
  • (modified) clang/include/clang/Analysis/FlowSensitive/DebugSupport.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Formula.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Logger.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Models/ChromiumCheckModel.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Models/UncheckedOptionalAccessModel.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/RecordOps.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/SimplifyConstraints.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Solver.h (+4-3)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Transfer.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/TypeErasedDataflowAnalysis.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Value.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/WatchedLiteralsSolver.h (+2-1)
  • (modified) clang/include/clang/Analysis/IssueHash.h (+3-2)
  • (modified) clang/include/clang/Analysis/MacroExpansionContext.h (+2-1)
  • (modified) clang/include/clang/Analysis/PathDiagnostic.h (+14-13)
  • (modified) clang/include/clang/Analysis/ProgramPoint.h (+4-3)
  • (modified) clang/include/clang/Analysis/RetainSummaryManager.h (+5-4)
  • (modified) clang/include/clang/Basic/ASTSourceDescriptor.h (+2-1)
  • (modified) clang/include/clang/Basic/AttrSubjectMatchRules.h (+2-1)
  • (modified) clang/include/clang/Basic/AttributeCommonInfo.h (+2-1)
  • (modified) clang/include/clang/Basic/Attributes.h (+2-1)
  • (modified) clang/include/clang/Basic/Builtins.h (+4-3)
  • (modified) clang/include/clang/Basic/CLWarnings.h (+2-1)
  • (modified) clang/include/clang/Basic/CharInfo.h (+2-1)
  • (modified) clang/include/clang/Basic/CodeGenOptions.h (+2-1)
  • (modified) clang/include/clang/Basic/Cuda.h (+11-10)
  • (modified) clang/include/clang/Basic/DarwinSDKInfo.h (+4-3)
  • (modified) clang/include/clang/Basic/Diagnostic.h (+18-17)
  • (modified) clang/include/clang/Basic/DiagnosticError.h (+2-1)
  • (modified) clang/include/clang/Basic/DiagnosticIDs.h (+2-1)
  • (modified) clang/include/clang/Basic/DiagnosticOptions.h (+3-2)
  • (modified) clang/include/clang/Basic/ExpressionTraits.h (+3-2)
  • (modified) clang/include/clang/Basic/FileEntry.h (+2-1)
  • (modified) clang/include/clang/Basic/FileManager.h (+2-1)
  • (modified) clang/include/clang/Basic/FileSystemStatCache.h (+3-2)
  • (modified) clang/include/clang/Basic/IdentifierTable.h (+9-8)
  • (modified) clang/include/clang/Basic/LangOptions.h (+4-3)
  • (modified) clang/include/clang/Basic/LangStandard.h (+4-3)
  • (modified) clang/include/clang/Basic/MakeSupport.h (+2-1)
  • (modified) clang/include/clang/Basic/Module.h (+3-2)
  • (modified) clang/include/clang/Basic/NoSanitizeList.h (+2-1)
  • (modified) clang/include/clang/Basic/ObjCRuntime.h (+3-2)
  • (modified) clang/include/clang/Basic/OpenCLOptions.h (+2-1)
  • (modified) clang/include/clang/Basic/OpenMPKinds.h (+27-26)
  • (modified) clang/include/clang/Basic/OperatorKinds.h (+2-1)
  • (modified) clang/include/clang/Basic/OperatorPrecedence.h (+2-1)
  • (modified) clang/include/clang/Basic/ParsedAttrInfo.h (+3-2)
  • (modified) clang/include/clang/Basic/PrettyStackTrace.h (+2-1)
  • (modified) clang/include/clang/Basic/ProfileList.h (+2-1)
  • (modified) clang/include/clang/Basic/SanitizerSpecialCaseList.h (+2-1)
  • (modified) clang/include/clang/Basic/Sanitizers.h (+10-9)
  • (modified) clang/include/clang/Basic/Sarif.h (+2-1)
  • (modified) clang/include/clang/Basic/SourceLocation.h (+5-4)
  • (modified) clang/include/clang/Basic/SourceManager.h (+6-5)
  • (modified) clang/include/clang/Basic/SourceManagerInternals.h (+2-1)
  • (modified) clang/include/clang/Basic/SourceMgrAdapter.h (+2-1)
  • (modified) clang/include/clang/Basic/Specifiers.h (+4-3)
  • (modified) clang/include/clang/Basic/Stack.h (+4-3)
  • (modified) clang/include/clang/Basic/SyncScope.h (+2-1)
  • (modified) clang/include/clang/Basic/TargetID.h (+7-6)
  • (modified) clang/include/clang/Basic/TargetInfo.h (+2-1)
  • (modified) clang/include/clang/Basic/TokenKinds.h (+7-6)
  • (modified) clang/include/clang/Basic/TypeTraits.h (+8-7)
  • (modified) clang/include/clang/Basic/Version.h (+10-9)
  • (modified) clang/include/clang/Basic/XRayInstr.h (+3-2)
  • (modified) clang/include/clang/Basic/XRayLists.h (+2-1)
  • (modified) clang/include/clang/CodeGen/BackendUtil.h (+4-3)
  • (modified) clang/include/clang/CodeGen/CGFunctionInfo.h (+4-3)
  • (modified) clang/include/clang/CodeGen/CodeGenABITypes.h (+21-20)
  • (modified) clang/include/clang/CodeGen/CodeGenAction.h (+8-7)
  • (modified) clang/include/clang/CodeGen/ConstantInitBuilder.h (+5-4)
  • (modified) clang/include/clang/CodeGen/ConstantInitFuture.h (+2-1)
  • (modified) clang/include/clang/CodeGen/ModuleBuilder.h (+3-2)
  • (modified) clang/include/clang/CodeGen/ObjectFilePCHContainerWriter.h (+2-1)
  • (modified) clang/include/clang/CodeGen/SwiftCallingConv.h (+15-14)
  • (modified) clang/include/clang/CrossTU/CrossTranslationUnit.h (+9-8)
  • (modified) clang/include/clang/Driver/Action.h (+29-28)
  • (modified) clang/include/clang/Driver/Compilation.h (+2-1)
  • (modified) clang/include/clang/Driver/Distro.h (+2-1)
  • (modified) clang/include/clang/Driver/Driver.h (+8-7)
  • (modified) clang/include/clang/Driver/Job.h (+4-3)
  • (modified) clang/include/clang/Driver/Multilib.h (+5-4)
  • (modified) clang/include/clang/Driver/MultilibBuilder.h (+3-2)
  • (modified) clang/include/clang/Driver/OffloadBundler.h (+5-4)
  • (modified) clang/include/clang/Driver/OptionUtils.h (+3-2)
  • (modified) clang/include/clang/Driver/Options.h (+2-1)
  • (modified) clang/include/clang/Driver/Phases.h (+2-1)
  • (modified) clang/include/clang/Driver/SanitizerArgs.h (+2-1)
  • (modified) clang/include/clang/Driver/Tool.h (+2-1)
  • (modified) clang/include/clang/Driver/ToolChain.h (+2-1)
  • (modified) clang/include/clang/Driver/Types.h (+26-25)
  • (modified) clang/include/clang/Driver/XRayArgs.h (+2-1)
  • (modified) clang/include/clang/Edit/Commit.h (+3-2)
  • (modified) clang/include/clang/Edit/EditedSource.h (+2-1)
  • (modified) clang/include/clang/Edit/EditsReceiver.h (+2-1)
  • (modified) clang/include/clang/Edit/Rewriters.h (+4-3)
  • (modified) clang/include/clang/ExtractAPI/API.h (+36-35)
  • (modified) clang/include/clang/ExtractAPI/APIIgnoresList.h (+3-2)
  • (modified) clang/include/clang/ExtractAPI/DeclarationFragments.h (+3-2)
  • (modified) clang/include/clang/ExtractAPI/ExtractAPIActionBase.h (+2-1)
  • (modified) clang/include/clang/ExtractAPI/FrontendActions.h (+3-2)
  • (modified) clang/include/clang/ExtractAPI/Serialization/SymbolGraphSerializer.h (+3-2)
  • (modified) clang/include/clang/ExtractAPI/TypedefUnderlyingTypeResolver.h (+2-1)
  • (modified) clang/include/clang/Format/Format.h (+36-35)
  • (modified) clang/include/clang/Frontend/ASTConsumers.h (+5-4)
  • (modified) clang/include/clang/Frontend/ASTUnit.h (+4-3)
  • (modified) clang/include/clang/Frontend/ChainedDiagnosticConsumer.h (+2-1)
  • (modified) clang/include/clang/Frontend/CompilerInstance.h (+2-1)
  • (modified) clang/include/clang/Frontend/CompilerInvocation.h (+10-9)
  • (modified) clang/include/clang/Frontend/DiagnosticRenderer.h (+3-2)
  • (modified) clang/include/clang/Frontend/FrontendAction.h (+6-5)
  • (modified) clang/include/clang/Frontend/FrontendActions.h (+27-26)
  • (modified) clang/include/clang/Frontend/FrontendOptions.h (+2-1)
  • (modified) clang/include/clang/Frontend/LayoutOverrideSource.h (+2-1)
  • (modified) clang/include/clang/Frontend/LogDiagnosticPrinter.h (+2-1)
  • (modified) clang/include/clang/Frontend/MultiplexConsumer.h (+3-2)
  • (modified) clang/include/clang/Frontend/PrecompiledPreamble.h (+7-6)
  • (modified) clang/include/clang/Frontend/SARIFDiagnostic.h (+2-1)
  • (modified) clang/include/clang/Frontend/SARIFDiagnosticPrinter.h (+2-1)
  • (modified) clang/include/clang/Frontend/SerializedDiagnosticPrinter.h (+2-1)
  • (modified) clang/include/clang/Frontend/SerializedDiagnosticReader.h (+4-3)
  • (modified) clang/include/clang/Frontend/TextDiagnostic.h (+2-1)
  • (modified) clang/include/clang/Frontend/TextDiagnosticBuffer.h (+2-1)
  • (modified) clang/include/clang/Frontend/TextDiagnosticPrinter.h (+2-1)
  • (modified) clang/include/clang/Frontend/Utils.h (+10-9)
  • (modified) clang/include/clang/Frontend/VerifyDiagnosticConsumer.h (+3-2)
  • (modified) clang/include/clang/FrontendTool/Utils.h (+3-2)
  • (modified) clang/include/clang/Index/CommentToXML.h (+2-1)
  • (modified) clang/include/clang/Index/IndexSymbol.h (+13-12)
  • (modified) clang/include/clang/Index/IndexingAction.h (+8-7)
  • (modified) clang/include/clang/Index/USRGeneration.h (+17-16)
  • (modified) clang/include/clang/IndexSerialization/SerializablePathCollection.h (+4-3)
  • (modified) clang/include/clang/InstallAPI/Context.h (+3-2)
  • (modified) clang/include/clang/InstallAPI/DirectoryScanner.h (+2-1)
  • (modified) clang/include/clang/InstallAPI/DylibVerifier.h (+3-2)
  • (modified) clang/include/clang/InstallAPI/FileList.h (+2-1)
  • (modified) clang/include/clang/InstallAPI/Frontend.h (+2-1)
  • (modified) clang/include/clang/InstallAPI/FrontendRecords.h (+2-1)
  • (modified) clang/include/clang/InstallAPI/HeaderFile.h (+6-5)
  • (modified) clang/include/clang/InstallAPI/Library.h (+2-1)
  • (modified) clang/include/clang/InstallAPI/Visitor.h (+2-1)
  • (modified) clang/include/clang/Interpreter/CodeCompletion.h (+2-1)
  • (modified) clang/include/clang/Interpreter/Interpreter.h (+3-2)
  • (modified) clang/include/clang/Lex/CodeCompletionHandler.h (+2-1)
  • (modified) clang/include/clang/Lex/DependencyDirectivesScanner.h (+3-2)
  • (modified) clang/include/clang/Lex/DirectoryLookup.h (+3-2)
  • (modified) clang/include/clang/Lex/ExternalPreprocessorSource.h (+2-1)
  • (modified) clang/include/clang/Lex/HeaderMap.h (+3-2)
  • (modified) clang/include/clang/Lex/HeaderSearch.h (+5-4)
  • (modified) clang/include/clang/Lex/Lexer.h (+2-1)
  • (modified) clang/include/clang/Lex/LiteralSupport.h (+7-6)
  • (modified) clang/include/clang/Lex/MacroArgs.h (+2-1)
  • (modified) clang/include/clang/Lex/MacroInfo.h (+5-4)
  • (modified) clang/include/clang/Lex/ModuleLoader.h (+2-1)
  • (modified) clang/include/clang/Lex/ModuleMap.h (+3-2)
  • (modified) clang/include/clang/Lex/PPCallbacks.h (+3-2)
  • (modified) clang/include/clang/Lex/PPConditionalDirectiveRecord.h (+2-1)
  • (modified) clang/include/clang/Lex/Pragma.h (+5-4)
  • (modified) clang/include/clang/Lex/PreprocessingRecord.h (+5-4)
  • (modified) clang/include/clang/Lex/Preprocessor.h (+4-3)
  • (modified) clang/include/clang/Lex/PreprocessorLexer.h (+2-1)
  • (modified) clang/include/clang/Lex/ScratchBuffer.h (+2-1)
  • (modified) clang/include/clang/Lex/Token.h (+2-1)
  • (modified) clang/include/clang/Lex/TokenConcatenation.h (+2-1)
  • (modified) clang/include/clang/Lex/TokenLexer.h (+2-1)
  • (modified) clang/include/clang/Parse/ParseAST.h (+3-2)
  • (modified) clang/include/clang/Parse/Parser.h (+13-12)
  • (modified) clang/include/clang/Parse/RAIIObjectsForParser.h (+2-1)
  • (modified) clang/include/clang/Rewrite/Core/HTMLRewrite.h (+10-9)
  • (modified) clang/include/clang/Rewrite/Core/Rewriter.h (+2-1)
  • (modified) clang/include/clang/Rewrite/Core/TokenRewriter.h (+2-1)
  • (modified) clang/include/clang/Rewrite/Frontend/ASTConsumers.h (+4-3)
  • (modified) clang/include/clang/Rewrite/Frontend/FixItRewriter.h (+3-2)
  • (modified) clang/include/clang/Rewrite/Frontend/FrontendActions.h (+8-7)
  • (modified) clang/include/clang/Rewrite/Frontend/Rewriters.h (+4-3)
  • (modified) clang/include/clang/Sema/AnalysisBasedWarnings.h (+3-2)
  • (modified) clang/include/clang/Sema/CodeCompleteConsumer.h (+20-19)
  • (modified) clang/include/clang/Sema/DeclSpec.h (+7-6)
  • (modified) clang/include/clang/Sema/DelayedDiagnostic.h (+2-1)
  • (modified) clang/include/clang/Sema/ExternalSemaSource.h (+2-1)
diff --git a/clang/include/clang/APINotes/APINotesManager.h b/clang/include/clang/APINotes/APINotesManager.h
index 98592438e90eab..05d7930d3a2e7f 100644
--- a/clang/include/clang/APINotes/APINotesManager.h
+++ b/clang/include/clang/APINotes/APINotesManager.h
@@ -10,6 +10,7 @@
 #define LLVM_CLANG_APINOTES_APINOTESMANAGER_H
 
 #include "clang/Basic/SourceLocation.h"
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/ArrayRef.h"
 #include "llvm/ADT/DenseMap.h"
 #include "llvm/ADT/PointerUnion.h"
@@ -41,7 +42,7 @@ class APINotesReader;
 /// external API notes files that correspond to a given header. Its primary
 /// operation is \c findAPINotes(), which finds the API notes reader that
 /// provides information about the declarations at that location.
-class APINotesManager {
+class CLANG_ABI APINotesManager {
   using ReaderEntry = llvm::PointerUnion<DirectoryEntryRef, APINotesReader *>;
 
   SourceManager &SM;
diff --git a/clang/include/clang/APINotes/APINotesReader.h b/clang/include/clang/APINotes/APINotesReader.h
index baf63340640242..58ee2857c7930f 100644
--- a/clang/include/clang/APINotes/APINotesReader.h
+++ b/clang/include/clang/APINotes/APINotesReader.h
@@ -16,6 +16,7 @@
 #define LLVM_CLANG_APINOTES_READER_H
 
 #include "clang/APINotes/Types.h"
+#include "clang/Support/Compiler.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/VersionTuple.h"
 #include <memory>
@@ -25,7 +26,7 @@ namespace api_notes {
 
 /// A class that reads API notes data from a binary file that was written by
 /// the \c APINotesWriter.
-class APINotesReader {
+class CLANG_ABI APINotesReader {
   class Implementation;
   std::unique_ptr<Implementation> Implementation;
 
diff --git a/clang/include/clang/APINotes/APINotesWriter.h b/clang/include/clang/APINotes/APINotesWriter.h
index 3cc16c3d959faf..b8b45a89dcfc8b 100644
--- a/clang/include/clang/APINotes/APINotesWriter.h
+++ b/clang/include/clang/APINotes/APINotesWriter.h
@@ -16,6 +16,7 @@
 #define LLVM_CLANG_APINOTES_WRITER_H
 
 #include "clang/APINotes/Types.h"
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/StringRef.h"
 #include "llvm/Support/VersionTuple.h"
 #include "llvm/Support/raw_ostream.h"
@@ -29,7 +30,7 @@ namespace api_notes {
 
 /// A class that writes API notes data to a binary representation that can be
 /// read by the \c APINotesReader.
-class APINotesWriter {
+class CLANG_ABI APINotesWriter {
   class Implementation;
   std::unique_ptr<Implementation> Implementation;
 
diff --git a/clang/include/clang/APINotes/APINotesYAMLCompiler.h b/clang/include/clang/APINotes/APINotesYAMLCompiler.h
index 9c24ed85b6a124..3954cf347e8244 100644
--- a/clang/include/clang/APINotes/APINotesYAMLCompiler.h
+++ b/clang/include/clang/APINotes/APINotesYAMLCompiler.h
@@ -9,6 +9,7 @@
 #ifndef LLVM_CLANG_APINOTES_APINOTESYAMLCOMPILER_H
 #define LLVM_CLANG_APINOTES_APINOTESYAMLCOMPILER_H
 
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/StringRef.h"
 #include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/raw_ostream.h"
@@ -22,10 +23,10 @@ namespace api_notes {
 /// Parses the APINotes YAML content and writes the representation back to the
 /// specified stream.  This provides a means of testing the YAML processing of
 /// the APINotes format.
-bool parseAndDumpAPINotes(llvm::StringRef YI, llvm::raw_ostream &OS);
+CLANG_ABI bool parseAndDumpAPINotes(llvm::StringRef YI, llvm::raw_ostream &OS);
 
 /// Converts API notes from YAML format to binary format.
-bool compileAPINotes(llvm::StringRef YAMLInput, const FileEntry *SourceFile,
+CLANG_ABI bool compileAPINotes(llvm::StringRef YAMLInput, const FileEntry *SourceFile,
                      llvm::raw_ostream &OS,
                      llvm::SourceMgr::DiagHandlerTy DiagHandler = nullptr,
                      void *DiagHandlerCtxt = nullptr);
diff --git a/clang/include/clang/APINotes/Types.h b/clang/include/clang/APINotes/Types.h
index 89889910d1a073..574406586c4674 100644
--- a/clang/include/clang/APINotes/Types.h
+++ b/clang/include/clang/APINotes/Types.h
@@ -10,6 +10,7 @@
 #define LLVM_CLANG_APINOTES_TYPES_H
 
 #include "clang/Basic/Specifiers.h"
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/ArrayRef.h"
 #include "llvm/ADT/StringRef.h"
 #include <climits>
@@ -49,7 +50,7 @@ enum class SwiftNewTypeKind {
 /// Describes API notes data for any entity.
 ///
 /// This is used as the base of all API notes.
-class CommonEntityInfo {
+class CLANG_ABI CommonEntityInfo {
 public:
   /// Message to use when this entity is unavailable.
   std::string UnavailableMsg;
@@ -132,7 +133,7 @@ inline bool operator!=(const CommonEntityInfo &LHS,
 }
 
 /// Describes API notes for types.
-class CommonTypeInfo : public CommonEntityInfo {
+class CLANG_ABI CommonTypeInfo : public CommonEntityInfo {
   /// The Swift type to which a given type is bridged.
   ///
   /// Reflects the swift_bridge attribute.
@@ -194,7 +195,7 @@ inline bool operator!=(const CommonTypeInfo &LHS, const CommonTypeInfo &RHS) {
 
 /// Describes API notes data for an Objective-C class or protocol or a C++
 /// namespace.
-class ContextInfo : public CommonTypeInfo {
+class CLANG_ABI ContextInfo : public CommonTypeInfo {
   /// Whether this class has a default nullability.
   LLVM_PREFERRED_TYPE(bool)
   unsigned HasDefaultNullability : 1;
@@ -301,7 +302,7 @@ inline bool operator!=(const ContextInfo &LHS, const ContextInfo &RHS) {
 }
 
 /// API notes for a variable/property.
-class VariableInfo : public CommonEntityInfo {
+class CLANG_ABI VariableInfo : public CommonEntityInfo {
   /// Whether this property has been audited for nullability.
   LLVM_PREFERRED_TYPE(bool)
   unsigned NullabilityAudited : 1;
@@ -358,7 +359,7 @@ inline bool operator!=(const VariableInfo &LHS, const VariableInfo &RHS) {
 }
 
 /// Describes API notes data for an Objective-C property.
-class ObjCPropertyInfo : public VariableInfo {
+class CLANG_ABI ObjCPropertyInfo : public VariableInfo {
   LLVM_PREFERRED_TYPE(bool)
   unsigned SwiftImportAsAccessorsSpecified : 1;
   LLVM_PREFERRED_TYPE(bool)
@@ -416,7 +417,7 @@ inline bool operator!=(const ObjCPropertyInfo &LHS,
 }
 
 /// Describes a function or method parameter.
-class ParamInfo : public VariableInfo {
+class CLANG_ABI ParamInfo : public VariableInfo {
   /// Whether noescape was specified.
   LLVM_PREFERRED_TYPE(bool)
   unsigned NoEscapeSpecified : 1;
@@ -486,7 +487,7 @@ inline bool operator!=(const ParamInfo &LHS, const ParamInfo &RHS) {
 }
 
 /// API notes for a function or method.
-class FunctionInfo : public CommonEntityInfo {
+class CLANG_ABI FunctionInfo : public CommonEntityInfo {
 private:
   static constexpr const uint64_t NullabilityKindMask = 0x3;
   static constexpr const unsigned NullabilityKindSize = 2;
@@ -606,7 +607,7 @@ inline bool operator!=(const FunctionInfo &LHS, const FunctionInfo &RHS) {
 }
 
 /// Describes API notes data for an Objective-C method.
-class ObjCMethodInfo : public FunctionInfo {
+class CLANG_ABI ObjCMethodInfo : public FunctionInfo {
 public:
   /// Whether this is a designated initializer of its class.
   LLVM_PREFERRED_TYPE(bool)
@@ -675,7 +676,7 @@ class EnumConstantInfo : public CommonEntityInfo {
 };
 
 /// Describes API notes data for a tag.
-class TagInfo : public CommonTypeInfo {
+class CLANG_ABI TagInfo : public CommonTypeInfo {
   LLVM_PREFERRED_TYPE(bool)
   unsigned HasFlagEnum : 1;
   LLVM_PREFERRED_TYPE(bool)
@@ -765,7 +766,7 @@ inline bool operator!=(const TagInfo &LHS, const TagInfo &RHS) {
 }
 
 /// Describes API notes data for a typedef.
-class TypedefInfo : public CommonTypeInfo {
+class CLANG_ABI TypedefInfo : public CommonTypeInfo {
 public:
   std::optional<SwiftNewTypeKind> SwiftWrapper;
 
diff --git a/clang/include/clang/ARCMigrate/ARCMT.h b/clang/include/clang/ARCMigrate/ARCMT.h
index 2b950e3d2cc2bf..dc078101e371ff 100644
--- a/clang/include/clang/ARCMigrate/ARCMT.h
+++ b/clang/include/clang/ARCMigrate/ARCMT.h
@@ -12,6 +12,7 @@
 #include "clang/ARCMigrate/FileRemapper.h"
 #include "clang/Basic/SourceLocation.h"
 #include "clang/Frontend/CompilerInvocation.h"
+#include "clang/Support/Compiler.h"
 
 namespace clang {
   class ASTContext;
@@ -37,7 +38,7 @@ namespace arcmt {
 /// the pre-migration ARC diagnostics.
 ///
 /// \returns false if no error is produced, true otherwise.
-bool
+CLANG_ABI bool
 checkForManualIssues(CompilerInvocation &CI, const FrontendInputFile &Input,
                      std::shared_ptr<PCHContainerOperations> PCHContainerOps,
                      DiagnosticConsumer *DiagClient,
@@ -48,7 +49,7 @@ checkForManualIssues(CompilerInvocation &CI, const FrontendInputFile &Input,
 /// applies automatic modifications to source files to conform to ARC.
 ///
 /// \returns false if no error is produced, true otherwise.
-bool
+CLANG_ABI bool
 applyTransformations(CompilerInvocation &origCI,
                      const FrontendInputFile &Input,
                      std::shared_ptr<PCHContainerOperations> PCHContainerOps,
@@ -65,7 +66,7 @@ applyTransformations(CompilerInvocation &origCI,
 /// the pre-migration ARC diagnostics.
 ///
 /// \returns false if no error is produced, true otherwise.
-bool migrateWithTemporaryFiles(
+CLANG_ABI bool migrateWithTemporaryFiles(
     CompilerInvocation &origCI, const FrontendInputFile &Input,
     std::shared_ptr<PCHContainerOperations> PCHContainerOps,
     DiagnosticConsumer *DiagClient, StringRef outputDir,
@@ -75,7 +76,7 @@ bool migrateWithTemporaryFiles(
 /// migrateWithTemporaryFiles produced.
 ///
 /// \returns false if no error is produced, true otherwise.
-bool getFileRemappings(std::vector<std::pair<std::string,std::string> > &remap,
+CLANG_ABI bool getFileRemappings(std::vector<std::pair<std::string,std::string> > &remap,
                        StringRef outputDir,
                        DiagnosticConsumer *DiagClient);
 
@@ -83,17 +84,17 @@ bool getFileRemappings(std::vector<std::pair<std::string,std::string> > &remap,
 /// info.
 ///
 /// \returns false if no error is produced, true otherwise.
-bool getFileRemappingsFromFileList(
+CLANG_ABI bool getFileRemappingsFromFileList(
                         std::vector<std::pair<std::string,std::string> > &remap,
                         ArrayRef<StringRef> remapFiles,
                         DiagnosticConsumer *DiagClient);
 
 typedef void (*TransformFn)(MigrationPass &pass);
 
-std::vector<TransformFn> getAllTransformations(LangOptions::GCMode OrigGCMode,
+CLANG_ABI std::vector<TransformFn> getAllTransformations(LangOptions::GCMode OrigGCMode,
                                                bool NoFinalizeRemoval);
 
-class MigrationProcess {
+class CLANG_ABI MigrationProcess {
   CompilerInvocation OrigCI;
   std::shared_ptr<PCHContainerOperations> PCHContainerOps;
   DiagnosticConsumer *DiagClient;
@@ -107,7 +108,7 @@ class MigrationProcess {
                    DiagnosticConsumer *diagClient,
                    StringRef outputDir = StringRef());
 
-  class RewriteListener {
+  class CLANG_ABI RewriteListener {
   public:
     virtual ~RewriteListener();
 
diff --git a/clang/include/clang/ARCMigrate/ARCMTActions.h b/clang/include/clang/ARCMigrate/ARCMTActions.h
index 714f4b33db446b..50c6142078f5c8 100644
--- a/clang/include/clang/ARCMigrate/ARCMTActions.h
+++ b/clang/include/clang/ARCMigrate/ARCMTActions.h
@@ -11,12 +11,13 @@
 
 #include "clang/ARCMigrate/FileRemapper.h"
 #include "clang/Frontend/FrontendAction.h"
+#include "clang/Support/Compiler.h"
 #include <memory>
 
 namespace clang {
 namespace arcmt {
 
-class CheckAction : public WrapperFrontendAction {
+class CLANG_ABI CheckAction : public WrapperFrontendAction {
 protected:
   bool BeginInvocation(CompilerInstance &CI) override;
 
@@ -24,7 +25,7 @@ class CheckAction : public WrapperFrontendAction {
   CheckAction(std::unique_ptr<FrontendAction> WrappedAction);
 };
 
-class ModifyAction : public WrapperFrontendAction {
+class CLANG_ABI ModifyAction : public WrapperFrontendAction {
 protected:
   bool BeginInvocation(CompilerInstance &CI) override;
 
@@ -32,7 +33,7 @@ class ModifyAction : public WrapperFrontendAction {
   ModifyAction(std::unique_ptr<FrontendAction> WrappedAction);
 };
 
-class MigrateSourceAction : public ASTFrontendAction {
+class CLANG_ABI MigrateSourceAction : public ASTFrontendAction {
   FileRemapper Remapper;
 protected:
   bool BeginInvocation(CompilerInstance &CI) override;
@@ -40,7 +41,7 @@ class MigrateSourceAction : public ASTFrontendAction {
                                                  StringRef InFile) override;
 };
 
-class MigrateAction : public WrapperFrontendAction {
+class CLANG_ABI MigrateAction : public WrapperFrontendAction {
   std::string MigrateDir;
   std::string PlistOut;
   bool EmitPremigrationARCErrors;
@@ -55,7 +56,7 @@ class MigrateAction : public WrapperFrontendAction {
 };
 
 /// Migrates to modern ObjC syntax.
-class ObjCMigrateAction : public WrapperFrontendAction {
+class CLANG_ABI ObjCMigrateAction : public WrapperFrontendAction {
   std::string MigrateDir;
   unsigned    ObjCMigAction;
   FileRemapper Remapper;
diff --git a/clang/include/clang/ARCMigrate/FileRemapper.h b/clang/include/clang/ARCMigrate/FileRemapper.h
index afcee363516a21..3c9f706a75cf38 100644
--- a/clang/include/clang/ARCMigrate/FileRemapper.h
+++ b/clang/include/clang/ARCMigrate/FileRemapper.h
@@ -11,6 +11,7 @@
 
 #include "clang/Basic/FileEntry.h"
 #include "clang/Basic/LLVM.h"
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/DenseMap.h"
 #include "llvm/ADT/STLExtras.h"
 #include "llvm/ADT/StringRef.h"
@@ -29,7 +30,7 @@ namespace clang {
 
 namespace arcmt {
 
-class FileRemapper {
+class CLANG_ABI FileRemapper {
   // FIXME: Reuse the same FileManager for multiple ASTContexts.
   std::unique_ptr<FileManager> FileMgr;
 
diff --git a/clang/include/clang/AST/APNumericStorage.h b/clang/include/clang/AST/APNumericStorage.h
index 95eddbcd86e839..ae634d46dfea2b 100644
--- a/clang/include/clang/AST/APNumericStorage.h
+++ b/clang/include/clang/AST/APNumericStorage.h
@@ -9,6 +9,7 @@
 #ifndef LLVM_CLANG_AST_APNUMERICSTORAGE_H
 #define LLVM_CLANG_AST_APNUMERICSTORAGE_H
 
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/APFloat.h"
 #include "llvm/ADT/APInt.h"
 
@@ -23,7 +24,7 @@ class ASTContext;
 /// to allocate IntegerLiteral/FloatingLiteral nodes the memory associated with
 /// the APFloat/APInt values will never get freed. APNumericStorage uses
 /// ASTContext's allocator for memory allocation.
-class APNumericStorage {
+class CLANG_ABI APNumericStorage {
   union {
     uint64_t VAL;   ///< Used to store the <= 64 bits integer value.
     uint64_t *pVal; ///< Used to store the >64 bits integer value.
diff --git a/clang/include/clang/AST/APValue.h b/clang/include/clang/AST/APValue.h
index c4206b73b11562..fc6baf92a90202 100644
--- a/clang/include/clang/AST/APValue.h
+++ b/clang/include/clang/AST/APValue.h
@@ -14,6 +14,7 @@
 #define LLVM_CLANG_AST_APVALUE_H
 
 #include "clang/Basic/LLVM.h"
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/APFixedPoint.h"
 #include "llvm/ADT/APFloat.h"
 #include "llvm/ADT/APSInt.h"
@@ -41,7 +42,7 @@ template <typename T> class BasicReaderBase;
   class QualType;
 
 /// Symbolic representation of typeid(T) for some type T.
-class TypeInfoLValue {
+class CLANG_ABI TypeInfoLValue {
   const Type *T;
 
 public:
@@ -119,7 +120,7 @@ namespace clang {
 /// APValue - This class implements a discriminated union of [uninitialized]
 /// [APSInt] [APFloat], [Complex APSInt] [Complex APFloat], [Expr + Offset],
 /// [Vector: N * APValue], [Array: N * APValue]
-class APValue {
+class CLANG_ABI APValue {
   typedef llvm::APFixedPoint APFixedPoint;
   typedef llvm::APSInt APSInt;
   typedef llvm::APFloat APFloat;
@@ -143,7 +144,7 @@ class APValue {
     AddrLabelDiff
   };
 
-  class LValueBase {
+  class CLANG_ABI LValueBase {
     typedef llvm::PointerUnion<const ValueDecl *, const Expr *, TypeInfoLValue,
                                DynamicAllocLValue>
         PtrTy;
@@ -179,11 +180,11 @@ class APValue {
 
     QualType getType() const;
 
-    friend bool operator==(const LValueBase &LHS, const LValueBase &RHS);
+    friend CLANG_ABI bool operator==(const LValueBase &LHS, const LValueBase &RHS);
     friend bool operator!=(const LValueBase &LHS, const LValueBase &RHS) {
       return !(LHS == RHS);
     }
-    friend llvm::hash_code hash_value(const LValueBase &Base);
+    friend CLANG_ABI llvm::hash_code hash_value(const LValueBase &Base);
     friend struct llvm::DenseMapInfo<LValueBase>;
 
   private:
@@ -205,7 +206,7 @@ class APValue {
   typedef llvm::PointerIntPair<const Decl *, 1, bool> BaseOrMemberType;
 
   /// A non-discriminated union of a base, field, or array index.
-  class LValuePathEntry {
+  class CLANG_ABI LValuePathEntry {
     static_assert(sizeof(uintptr_t) <= sizeof(uint64_t),
                   "pointer doesn't fit in 64 bits?");
     uint64_t Value;
@@ -237,7 +238,7 @@ class APValue {
       return llvm::hash_value(A.Value);
     }
   };
-  class LValuePathSerializationHelper {
+  class CLANG_ABI LValuePathSerializationHelper {
     const void *Ty;
 
   public:
@@ -274,7 +275,7 @@ class APValue {
     Vec &operator=(const Vec &) = delete;
     ~Vec() { delete[] Elts; }
   };
-  struct Arr {
+  struct CLANG_ABI Arr {
     APValue *Elts;
     unsigned NumElts, ArrSize;
     Arr(unsigned NumElts, unsigned ArrSize);
@@ -282,7 +283,7 @@ class APValue {
     Arr &operator=(const Arr &) = delete;
     ~Arr();
   };
-  struct StructData {
+  struct CLANG_ABI StructData {
     APValue *Elts;
     unsigned NumBases;
     unsigned NumFields;
@@ -291,7 +292,7 @@ class APValue {
     StructData &operator=(const StructData &) = delete;
     ~StructData();
   };
-  struct UnionData {
+  struct CLANG_ABI UnionData {
     const FieldDecl *Field;
     APValue *Value;
     UnionData();
@@ -702,7 +703,7 @@ class APValue {
 } // end namespace clang.
 
 namespace llvm {
-template<> struct DenseMapInfo<clang::APValue::LValueBase> {
+template<> struct CLANG_ABI DenseMapInfo<clang::APValue::LValueBase> {
   static clang::APValue::LValueBase getEmptyKey();
   static clang::APValue::LValueBase getTombstoneKey();
   static unsigned getHashValue(const clang::APValue::LValueBase &Base);
diff --git a/clang/include/clang/AST/ASTConcept.h b/clang/include/clang/AST/ASTConcept.h
index 00500e214f4ce6..59b0a8e9d96a9d 100644
--- a/clang/include/clang/AST/ASTConcept.h
+++ b/clang/include/clang/AST/ASTConcept.h
@@ -18,6 +18,7 @@
 #include "clang/AST/NestedNameSpecifier.h"
 #include "clang/AST/TemplateBase.h"
 #include "clang/Basic/SourceLocation.h"
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/FoldingSet.h"
 #include "llvm/ADT/PointerUnion.h"
 #include "llvm/ADT/SmallVector.h"
@@ -32,7 +33,7 @@ struct PrintingPolicy;
 
 /// The result of a constraint satisfaction check, containing the necessary
 /// information to diagnose an unsatisfied constraint.
-class ConstraintSatisfaction : public llvm::FoldingSetNode {
+class CLANG_ABI ConstraintSatisfaction : public llvm::FoldingSetNode {
   // The template-like entity that 'owns' the constraint checked here (can be a
   // constrained entity or a concept).
   const NamedDecl *ConstraintOwner = nullptr;
@@ -84,7 +85,7 @@ using UnsatisfiedConstraintRecord =
 /// necessary information to diagnose an unsatisfied constraint.
 ///
 /// This is safe to store in an AST node, as opposed to ConstraintSatisfaction.
-struct ASTConstraintSatisfaction final :
+struct CLANG_ABI ASTConstraintSatisfaction final :
     llvm::TrailingObjects<ASTConstraintSatisfaction,
                           UnsatisfiedConstraintRecord> {
   std::size_t NumRecords;
@@ -121,7 +122,7 @@ struct ASTConstraintSatisfaction final :
 ///
 ///   template <std::derives_from<Expr> T> void dump();
 ///             ~~~~~~~~~~~~~~~~~~~~~~~ (in TemplateTypeParmDecl)
-class ConceptReference {
+class CLANG_ABI ConceptReference {
   // \brief The optional nested name specifier used when naming the concept.
   NestedNameSpecifierLoc NestedNameSpec;
 
diff --git a/clang/include/clang/AST/ASTConsumer.h b/clang/include/clang/AST/ASTConsumer.h
index 447f2592d23595..735c7e549f5cac 100644
--- a/clang/include/clang/AST/ASTConsumer.h
+++ b/clang/include/clang/AST/ASTConsumer.h
@@ -13,6 +13,7 @@
 #ifndef LLVM_CLANG_AST_ASTCONSUMER_H
 #define LLVM_CLANG_AST_ASTCONSUMER_H
 
+#include "clang/Support/Compiler.h"
 namespace clang {
   class ASTContext;
   class CXXMethodDecl;
@@ -31,7 +32,7 @@ namespace clang {
 /// ASTCons...
[truncated]

@llvmbot
Copy link
Collaborator

llvmbot commented Sep 23, 2024

@llvm/pr-subscribers-hlsl

Author: Thomas Fransham (fsfod)

Changes

The visibility macros generated here are created by a ids clang tooling based tool that @compnerd wrote and I've extended.
To reduce the numbers of exports and to avoid explicitly deleting more special members than necessary for MSVC only classes with out of line members or static variables have visibility macros added to them. I've included the config file that used to drive the tool for the Clang codebase to add some insight files are or aren't modified. I skipped running clang-format over most of changes just so the diffs are more readable and some files some weird indenting that clang-format to reformat the whole file.
These changes also depend on the macros to be added in #108276.


Patch is 1.09 MiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/109702.diff

501 Files Affected:

  • (modified) clang/include/clang/APINotes/APINotesManager.h (+2-1)
  • (modified) clang/include/clang/APINotes/APINotesReader.h (+2-1)
  • (modified) clang/include/clang/APINotes/APINotesWriter.h (+2-1)
  • (modified) clang/include/clang/APINotes/APINotesYAMLCompiler.h (+3-2)
  • (modified) clang/include/clang/APINotes/Types.h (+11-10)
  • (modified) clang/include/clang/ARCMigrate/ARCMT.h (+9-8)
  • (modified) clang/include/clang/ARCMigrate/ARCMTActions.h (+6-5)
  • (modified) clang/include/clang/ARCMigrate/FileRemapper.h (+2-1)
  • (modified) clang/include/clang/AST/APNumericStorage.h (+2-1)
  • (modified) clang/include/clang/AST/APValue.h (+12-11)
  • (modified) clang/include/clang/AST/ASTConcept.h (+4-3)
  • (modified) clang/include/clang/AST/ASTConsumer.h (+2-1)
  • (modified) clang/include/clang/AST/ASTContext.h (+5-4)
  • (modified) clang/include/clang/AST/ASTContextAllocate.h (+5-4)
  • (modified) clang/include/clang/AST/ASTDiagnostic.h (+3-2)
  • (modified) clang/include/clang/AST/ASTDumper.h (+2-1)
  • (modified) clang/include/clang/AST/ASTImportError.h (+2-1)
  • (modified) clang/include/clang/AST/ASTImporter.h (+3-2)
  • (modified) clang/include/clang/AST/ASTImporterLookupTable.h (+2-1)
  • (modified) clang/include/clang/AST/ASTMutationListener.h (+2-1)
  • (modified) clang/include/clang/AST/ASTStructuralEquivalence.h (+2-1)
  • (modified) clang/include/clang/AST/ASTTypeTraits.h (+3-2)
  • (modified) clang/include/clang/AST/ASTUnresolvedSet.h (+2-1)
  • (modified) clang/include/clang/AST/Attr.h (+2-1)
  • (modified) clang/include/clang/AST/Availability.h (+2-1)
  • (modified) clang/include/clang/AST/CXXInheritance.h (+3-2)
  • (modified) clang/include/clang/AST/Comment.h (+7-6)
  • (modified) clang/include/clang/AST/CommentBriefParser.h (+2-1)
  • (modified) clang/include/clang/AST/CommentCommandTraits.h (+2-1)
  • (modified) clang/include/clang/AST/CommentLexer.h (+3-2)
  • (modified) clang/include/clang/AST/CommentParser.h (+2-1)
  • (modified) clang/include/clang/AST/CommentSema.h (+2-1)
  • (modified) clang/include/clang/AST/ComparisonCategories.h (+5-4)
  • (modified) clang/include/clang/AST/ComputeDependence.h (+86-85)
  • (modified) clang/include/clang/AST/DataCollection.h (+2-1)
  • (modified) clang/include/clang/AST/Decl.h (+35-34)
  • (modified) clang/include/clang/AST/DeclBase.h (+5-4)
  • (modified) clang/include/clang/AST/DeclCXX.h (+33-32)
  • (modified) clang/include/clang/AST/DeclContextInternals.h (+2-1)
  • (modified) clang/include/clang/AST/DeclFriend.h (+2-1)
  • (modified) clang/include/clang/AST/DeclGroup.h (+2-1)
  • (modified) clang/include/clang/AST/DeclID.h (+3-2)
  • (modified) clang/include/clang/AST/DeclObjC.h (+20-19)
  • (modified) clang/include/clang/AST/DeclOpenMP.h (+7-6)
  • (modified) clang/include/clang/AST/DeclTemplate.h (+25-24)
  • (modified) clang/include/clang/AST/DeclarationName.h (+7-6)
  • (modified) clang/include/clang/AST/DependentDiagnostic.h (+2-1)
  • (modified) clang/include/clang/AST/Expr.h (+40-39)
  • (modified) clang/include/clang/AST/ExprCXX.h (+44-43)
  • (modified) clang/include/clang/AST/ExprConcepts.h (+7-6)
  • (modified) clang/include/clang/AST/ExprObjC.h (+6-5)
  • (modified) clang/include/clang/AST/ExprOpenMP.h (+3-2)
  • (modified) clang/include/clang/AST/ExternalASTMerger.h (+2-1)
  • (modified) clang/include/clang/AST/ExternalASTSource.h (+2-1)
  • (modified) clang/include/clang/AST/FormatString.h (+13-12)
  • (modified) clang/include/clang/AST/JSONNodeDumper.h (+3-2)
  • (modified) clang/include/clang/AST/LambdaCapture.h (+2-1)
  • (modified) clang/include/clang/AST/LocInfoType.h (+2-1)
  • (modified) clang/include/clang/AST/Mangle.h (+5-4)
  • (modified) clang/include/clang/AST/MangleNumberingContext.h (+2-1)
  • (modified) clang/include/clang/AST/NSAPI.h (+2-1)
  • (modified) clang/include/clang/AST/NestedNameSpecifier.h (+4-3)
  • (modified) clang/include/clang/AST/ODRDiagsEmitter.h (+2-1)
  • (modified) clang/include/clang/AST/ODRHash.h (+3-2)
  • (modified) clang/include/clang/AST/OSLog.h (+2-1)
  • (modified) clang/include/clang/AST/OpenACCClause.h (+34-33)
  • (modified) clang/include/clang/AST/OpenMPClause.h (+58-57)
  • (modified) clang/include/clang/AST/ParentMap.h (+2-1)
  • (modified) clang/include/clang/AST/ParentMapContext.h (+2-1)
  • (modified) clang/include/clang/AST/PrettyDeclStackTrace.h (+2-1)
  • (modified) clang/include/clang/AST/PrettyPrinter.h (+2-1)
  • (modified) clang/include/clang/AST/QualTypeNames.h (+3-2)
  • (modified) clang/include/clang/AST/Randstruct.h (+2-1)
  • (modified) clang/include/clang/AST/RawCommentList.h (+3-2)
  • (modified) clang/include/clang/AST/RecordLayout.h (+2-1)
  • (modified) clang/include/clang/AST/Redeclarable.h (+2-1)
  • (modified) clang/include/clang/AST/SelectorLocationsKind.h (+5-4)
  • (modified) clang/include/clang/AST/Stmt.h (+22-21)
  • (modified) clang/include/clang/AST/StmtCXX.h (+5-4)
  • (modified) clang/include/clang/AST/StmtIterator.h (+2-1)
  • (modified) clang/include/clang/AST/StmtObjC.h (+3-2)
  • (modified) clang/include/clang/AST/StmtOpenACC.h (+3-2)
  • (modified) clang/include/clang/AST/StmtOpenMP.h (+80-79)
  • (modified) clang/include/clang/AST/TemplateBase.h (+7-6)
  • (modified) clang/include/clang/AST/TemplateName.h (+6-5)
  • (modified) clang/include/clang/AST/TextNodeDumper.h (+3-2)
  • (modified) clang/include/clang/AST/Type.h (+71-70)
  • (modified) clang/include/clang/AST/TypeLoc.h (+32-31)
  • (modified) clang/include/clang/AST/VTTBuilder.h (+2-1)
  • (modified) clang/include/clang/AST/VTableBuilder.h (+5-4)
  • (modified) clang/include/clang/ASTMatchers/ASTMatchFinder.h (+5-4)
  • (modified) clang/include/clang/ASTMatchers/ASTMatchers.h (+231-230)
  • (modified) clang/include/clang/ASTMatchers/ASTMatchersInternal.h (+14-13)
  • (modified) clang/include/clang/ASTMatchers/Dynamic/Diagnostics.h (+5-4)
  • (modified) clang/include/clang/ASTMatchers/Dynamic/Parser.h (+4-3)
  • (modified) clang/include/clang/ASTMatchers/Dynamic/Registry.h (+3-2)
  • (modified) clang/include/clang/ASTMatchers/Dynamic/VariantValue.h (+6-5)
  • (modified) clang/include/clang/ASTMatchers/GtestMatchers.h (+9-8)
  • (modified) clang/include/clang/Analysis/Analyses/CFGReachabilityAnalysis.h (+2-1)
  • (modified) clang/include/clang/Analysis/Analyses/CalledOnceCheck.h (+2-1)
  • (modified) clang/include/clang/Analysis/Analyses/Consumed.h (+5-4)
  • (modified) clang/include/clang/Analysis/Analyses/Dominators.h (+4-3)
  • (modified) clang/include/clang/Analysis/Analyses/ExprMutationAnalyzer.h (+3-2)
  • (modified) clang/include/clang/Analysis/Analyses/IntervalPartition.h (+6-5)
  • (modified) clang/include/clang/Analysis/Analyses/LiveVariables.h (+5-4)
  • (modified) clang/include/clang/Analysis/Analyses/PostOrderCFGView.h (+3-2)
  • (modified) clang/include/clang/Analysis/Analyses/ReachableCode.h (+4-3)
  • (modified) clang/include/clang/Analysis/Analyses/ThreadSafety.h (+5-4)
  • (modified) clang/include/clang/Analysis/Analyses/ThreadSafetyCommon.h (+2-1)
  • (modified) clang/include/clang/Analysis/Analyses/ThreadSafetyLogical.h (+2-1)
  • (modified) clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h (+9-8)
  • (modified) clang/include/clang/Analysis/Analyses/ThreadSafetyUtil.h (+2-1)
  • (modified) clang/include/clang/Analysis/Analyses/UninitializedValues.h (+3-2)
  • (modified) clang/include/clang/Analysis/Analyses/UnsafeBufferUsage.h (+5-4)
  • (modified) clang/include/clang/Analysis/AnalysisDeclContext.h (+8-7)
  • (modified) clang/include/clang/Analysis/BodyFarm.h (+2-1)
  • (modified) clang/include/clang/Analysis/CFG.h (+7-6)
  • (modified) clang/include/clang/Analysis/CFGStmtMap.h (+2-1)
  • (modified) clang/include/clang/Analysis/CallGraph.h (+3-2)
  • (modified) clang/include/clang/Analysis/CloneDetection.h (+11-10)
  • (modified) clang/include/clang/Analysis/CodeInjector.h (+2-1)
  • (modified) clang/include/clang/Analysis/ConstructionContext.h (+4-3)
  • (modified) clang/include/clang/Analysis/DomainSpecific/CocoaConventions.h (+5-4)
  • (modified) clang/include/clang/Analysis/DomainSpecific/ObjCNoReturn.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/ASTOps.h (+8-7)
  • (modified) clang/include/clang/Analysis/FlowSensitive/AdornedCFG.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Arena.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/CNFFormula.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/DataflowAnalysis.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/DataflowAnalysisContext.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/DataflowEnvironment.h (+4-3)
  • (modified) clang/include/clang/Analysis/FlowSensitive/DebugSupport.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Formula.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Logger.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Models/ChromiumCheckModel.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Models/UncheckedOptionalAccessModel.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/RecordOps.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/SimplifyConstraints.h (+2-1)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Solver.h (+4-3)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Transfer.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/TypeErasedDataflowAnalysis.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/Value.h (+3-2)
  • (modified) clang/include/clang/Analysis/FlowSensitive/WatchedLiteralsSolver.h (+2-1)
  • (modified) clang/include/clang/Analysis/IssueHash.h (+3-2)
  • (modified) clang/include/clang/Analysis/MacroExpansionContext.h (+2-1)
  • (modified) clang/include/clang/Analysis/PathDiagnostic.h (+14-13)
  • (modified) clang/include/clang/Analysis/ProgramPoint.h (+4-3)
  • (modified) clang/include/clang/Analysis/RetainSummaryManager.h (+5-4)
  • (modified) clang/include/clang/Basic/ASTSourceDescriptor.h (+2-1)
  • (modified) clang/include/clang/Basic/AttrSubjectMatchRules.h (+2-1)
  • (modified) clang/include/clang/Basic/AttributeCommonInfo.h (+2-1)
  • (modified) clang/include/clang/Basic/Attributes.h (+2-1)
  • (modified) clang/include/clang/Basic/Builtins.h (+4-3)
  • (modified) clang/include/clang/Basic/CLWarnings.h (+2-1)
  • (modified) clang/include/clang/Basic/CharInfo.h (+2-1)
  • (modified) clang/include/clang/Basic/CodeGenOptions.h (+2-1)
  • (modified) clang/include/clang/Basic/Cuda.h (+11-10)
  • (modified) clang/include/clang/Basic/DarwinSDKInfo.h (+4-3)
  • (modified) clang/include/clang/Basic/Diagnostic.h (+18-17)
  • (modified) clang/include/clang/Basic/DiagnosticError.h (+2-1)
  • (modified) clang/include/clang/Basic/DiagnosticIDs.h (+2-1)
  • (modified) clang/include/clang/Basic/DiagnosticOptions.h (+3-2)
  • (modified) clang/include/clang/Basic/ExpressionTraits.h (+3-2)
  • (modified) clang/include/clang/Basic/FileEntry.h (+2-1)
  • (modified) clang/include/clang/Basic/FileManager.h (+2-1)
  • (modified) clang/include/clang/Basic/FileSystemStatCache.h (+3-2)
  • (modified) clang/include/clang/Basic/IdentifierTable.h (+9-8)
  • (modified) clang/include/clang/Basic/LangOptions.h (+4-3)
  • (modified) clang/include/clang/Basic/LangStandard.h (+4-3)
  • (modified) clang/include/clang/Basic/MakeSupport.h (+2-1)
  • (modified) clang/include/clang/Basic/Module.h (+3-2)
  • (modified) clang/include/clang/Basic/NoSanitizeList.h (+2-1)
  • (modified) clang/include/clang/Basic/ObjCRuntime.h (+3-2)
  • (modified) clang/include/clang/Basic/OpenCLOptions.h (+2-1)
  • (modified) clang/include/clang/Basic/OpenMPKinds.h (+27-26)
  • (modified) clang/include/clang/Basic/OperatorKinds.h (+2-1)
  • (modified) clang/include/clang/Basic/OperatorPrecedence.h (+2-1)
  • (modified) clang/include/clang/Basic/ParsedAttrInfo.h (+3-2)
  • (modified) clang/include/clang/Basic/PrettyStackTrace.h (+2-1)
  • (modified) clang/include/clang/Basic/ProfileList.h (+2-1)
  • (modified) clang/include/clang/Basic/SanitizerSpecialCaseList.h (+2-1)
  • (modified) clang/include/clang/Basic/Sanitizers.h (+10-9)
  • (modified) clang/include/clang/Basic/Sarif.h (+2-1)
  • (modified) clang/include/clang/Basic/SourceLocation.h (+5-4)
  • (modified) clang/include/clang/Basic/SourceManager.h (+6-5)
  • (modified) clang/include/clang/Basic/SourceManagerInternals.h (+2-1)
  • (modified) clang/include/clang/Basic/SourceMgrAdapter.h (+2-1)
  • (modified) clang/include/clang/Basic/Specifiers.h (+4-3)
  • (modified) clang/include/clang/Basic/Stack.h (+4-3)
  • (modified) clang/include/clang/Basic/SyncScope.h (+2-1)
  • (modified) clang/include/clang/Basic/TargetID.h (+7-6)
  • (modified) clang/include/clang/Basic/TargetInfo.h (+2-1)
  • (modified) clang/include/clang/Basic/TokenKinds.h (+7-6)
  • (modified) clang/include/clang/Basic/TypeTraits.h (+8-7)
  • (modified) clang/include/clang/Basic/Version.h (+10-9)
  • (modified) clang/include/clang/Basic/XRayInstr.h (+3-2)
  • (modified) clang/include/clang/Basic/XRayLists.h (+2-1)
  • (modified) clang/include/clang/CodeGen/BackendUtil.h (+4-3)
  • (modified) clang/include/clang/CodeGen/CGFunctionInfo.h (+4-3)
  • (modified) clang/include/clang/CodeGen/CodeGenABITypes.h (+21-20)
  • (modified) clang/include/clang/CodeGen/CodeGenAction.h (+8-7)
  • (modified) clang/include/clang/CodeGen/ConstantInitBuilder.h (+5-4)
  • (modified) clang/include/clang/CodeGen/ConstantInitFuture.h (+2-1)
  • (modified) clang/include/clang/CodeGen/ModuleBuilder.h (+3-2)
  • (modified) clang/include/clang/CodeGen/ObjectFilePCHContainerWriter.h (+2-1)
  • (modified) clang/include/clang/CodeGen/SwiftCallingConv.h (+15-14)
  • (modified) clang/include/clang/CrossTU/CrossTranslationUnit.h (+9-8)
  • (modified) clang/include/clang/Driver/Action.h (+29-28)
  • (modified) clang/include/clang/Driver/Compilation.h (+2-1)
  • (modified) clang/include/clang/Driver/Distro.h (+2-1)
  • (modified) clang/include/clang/Driver/Driver.h (+8-7)
  • (modified) clang/include/clang/Driver/Job.h (+4-3)
  • (modified) clang/include/clang/Driver/Multilib.h (+5-4)
  • (modified) clang/include/clang/Driver/MultilibBuilder.h (+3-2)
  • (modified) clang/include/clang/Driver/OffloadBundler.h (+5-4)
  • (modified) clang/include/clang/Driver/OptionUtils.h (+3-2)
  • (modified) clang/include/clang/Driver/Options.h (+2-1)
  • (modified) clang/include/clang/Driver/Phases.h (+2-1)
  • (modified) clang/include/clang/Driver/SanitizerArgs.h (+2-1)
  • (modified) clang/include/clang/Driver/Tool.h (+2-1)
  • (modified) clang/include/clang/Driver/ToolChain.h (+2-1)
  • (modified) clang/include/clang/Driver/Types.h (+26-25)
  • (modified) clang/include/clang/Driver/XRayArgs.h (+2-1)
  • (modified) clang/include/clang/Edit/Commit.h (+3-2)
  • (modified) clang/include/clang/Edit/EditedSource.h (+2-1)
  • (modified) clang/include/clang/Edit/EditsReceiver.h (+2-1)
  • (modified) clang/include/clang/Edit/Rewriters.h (+4-3)
  • (modified) clang/include/clang/ExtractAPI/API.h (+36-35)
  • (modified) clang/include/clang/ExtractAPI/APIIgnoresList.h (+3-2)
  • (modified) clang/include/clang/ExtractAPI/DeclarationFragments.h (+3-2)
  • (modified) clang/include/clang/ExtractAPI/ExtractAPIActionBase.h (+2-1)
  • (modified) clang/include/clang/ExtractAPI/FrontendActions.h (+3-2)
  • (modified) clang/include/clang/ExtractAPI/Serialization/SymbolGraphSerializer.h (+3-2)
  • (modified) clang/include/clang/ExtractAPI/TypedefUnderlyingTypeResolver.h (+2-1)
  • (modified) clang/include/clang/Format/Format.h (+36-35)
  • (modified) clang/include/clang/Frontend/ASTConsumers.h (+5-4)
  • (modified) clang/include/clang/Frontend/ASTUnit.h (+4-3)
  • (modified) clang/include/clang/Frontend/ChainedDiagnosticConsumer.h (+2-1)
  • (modified) clang/include/clang/Frontend/CompilerInstance.h (+2-1)
  • (modified) clang/include/clang/Frontend/CompilerInvocation.h (+10-9)
  • (modified) clang/include/clang/Frontend/DiagnosticRenderer.h (+3-2)
  • (modified) clang/include/clang/Frontend/FrontendAction.h (+6-5)
  • (modified) clang/include/clang/Frontend/FrontendActions.h (+27-26)
  • (modified) clang/include/clang/Frontend/FrontendOptions.h (+2-1)
  • (modified) clang/include/clang/Frontend/LayoutOverrideSource.h (+2-1)
  • (modified) clang/include/clang/Frontend/LogDiagnosticPrinter.h (+2-1)
  • (modified) clang/include/clang/Frontend/MultiplexConsumer.h (+3-2)
  • (modified) clang/include/clang/Frontend/PrecompiledPreamble.h (+7-6)
  • (modified) clang/include/clang/Frontend/SARIFDiagnostic.h (+2-1)
  • (modified) clang/include/clang/Frontend/SARIFDiagnosticPrinter.h (+2-1)
  • (modified) clang/include/clang/Frontend/SerializedDiagnosticPrinter.h (+2-1)
  • (modified) clang/include/clang/Frontend/SerializedDiagnosticReader.h (+4-3)
  • (modified) clang/include/clang/Frontend/TextDiagnostic.h (+2-1)
  • (modified) clang/include/clang/Frontend/TextDiagnosticBuffer.h (+2-1)
  • (modified) clang/include/clang/Frontend/TextDiagnosticPrinter.h (+2-1)
  • (modified) clang/include/clang/Frontend/Utils.h (+10-9)
  • (modified) clang/include/clang/Frontend/VerifyDiagnosticConsumer.h (+3-2)
  • (modified) clang/include/clang/FrontendTool/Utils.h (+3-2)
  • (modified) clang/include/clang/Index/CommentToXML.h (+2-1)
  • (modified) clang/include/clang/Index/IndexSymbol.h (+13-12)
  • (modified) clang/include/clang/Index/IndexingAction.h (+8-7)
  • (modified) clang/include/clang/Index/USRGeneration.h (+17-16)
  • (modified) clang/include/clang/IndexSerialization/SerializablePathCollection.h (+4-3)
  • (modified) clang/include/clang/InstallAPI/Context.h (+3-2)
  • (modified) clang/include/clang/InstallAPI/DirectoryScanner.h (+2-1)
  • (modified) clang/include/clang/InstallAPI/DylibVerifier.h (+3-2)
  • (modified) clang/include/clang/InstallAPI/FileList.h (+2-1)
  • (modified) clang/include/clang/InstallAPI/Frontend.h (+2-1)
  • (modified) clang/include/clang/InstallAPI/FrontendRecords.h (+2-1)
  • (modified) clang/include/clang/InstallAPI/HeaderFile.h (+6-5)
  • (modified) clang/include/clang/InstallAPI/Library.h (+2-1)
  • (modified) clang/include/clang/InstallAPI/Visitor.h (+2-1)
  • (modified) clang/include/clang/Interpreter/CodeCompletion.h (+2-1)
  • (modified) clang/include/clang/Interpreter/Interpreter.h (+3-2)
  • (modified) clang/include/clang/Lex/CodeCompletionHandler.h (+2-1)
  • (modified) clang/include/clang/Lex/DependencyDirectivesScanner.h (+3-2)
  • (modified) clang/include/clang/Lex/DirectoryLookup.h (+3-2)
  • (modified) clang/include/clang/Lex/ExternalPreprocessorSource.h (+2-1)
  • (modified) clang/include/clang/Lex/HeaderMap.h (+3-2)
  • (modified) clang/include/clang/Lex/HeaderSearch.h (+5-4)
  • (modified) clang/include/clang/Lex/Lexer.h (+2-1)
  • (modified) clang/include/clang/Lex/LiteralSupport.h (+7-6)
  • (modified) clang/include/clang/Lex/MacroArgs.h (+2-1)
  • (modified) clang/include/clang/Lex/MacroInfo.h (+5-4)
  • (modified) clang/include/clang/Lex/ModuleLoader.h (+2-1)
  • (modified) clang/include/clang/Lex/ModuleMap.h (+3-2)
  • (modified) clang/include/clang/Lex/PPCallbacks.h (+3-2)
  • (modified) clang/include/clang/Lex/PPConditionalDirectiveRecord.h (+2-1)
  • (modified) clang/include/clang/Lex/Pragma.h (+5-4)
  • (modified) clang/include/clang/Lex/PreprocessingRecord.h (+5-4)
  • (modified) clang/include/clang/Lex/Preprocessor.h (+4-3)
  • (modified) clang/include/clang/Lex/PreprocessorLexer.h (+2-1)
  • (modified) clang/include/clang/Lex/ScratchBuffer.h (+2-1)
  • (modified) clang/include/clang/Lex/Token.h (+2-1)
  • (modified) clang/include/clang/Lex/TokenConcatenation.h (+2-1)
  • (modified) clang/include/clang/Lex/TokenLexer.h (+2-1)
  • (modified) clang/include/clang/Parse/ParseAST.h (+3-2)
  • (modified) clang/include/clang/Parse/Parser.h (+13-12)
  • (modified) clang/include/clang/Parse/RAIIObjectsForParser.h (+2-1)
  • (modified) clang/include/clang/Rewrite/Core/HTMLRewrite.h (+10-9)
  • (modified) clang/include/clang/Rewrite/Core/Rewriter.h (+2-1)
  • (modified) clang/include/clang/Rewrite/Core/TokenRewriter.h (+2-1)
  • (modified) clang/include/clang/Rewrite/Frontend/ASTConsumers.h (+4-3)
  • (modified) clang/include/clang/Rewrite/Frontend/FixItRewriter.h (+3-2)
  • (modified) clang/include/clang/Rewrite/Frontend/FrontendActions.h (+8-7)
  • (modified) clang/include/clang/Rewrite/Frontend/Rewriters.h (+4-3)
  • (modified) clang/include/clang/Sema/AnalysisBasedWarnings.h (+3-2)
  • (modified) clang/include/clang/Sema/CodeCompleteConsumer.h (+20-19)
  • (modified) clang/include/clang/Sema/DeclSpec.h (+7-6)
  • (modified) clang/include/clang/Sema/DelayedDiagnostic.h (+2-1)
  • (modified) clang/include/clang/Sema/ExternalSemaSource.h (+2-1)
diff --git a/clang/include/clang/APINotes/APINotesManager.h b/clang/include/clang/APINotes/APINotesManager.h
index 98592438e90eab..05d7930d3a2e7f 100644
--- a/clang/include/clang/APINotes/APINotesManager.h
+++ b/clang/include/clang/APINotes/APINotesManager.h
@@ -10,6 +10,7 @@
 #define LLVM_CLANG_APINOTES_APINOTESMANAGER_H
 
 #include "clang/Basic/SourceLocation.h"
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/ArrayRef.h"
 #include "llvm/ADT/DenseMap.h"
 #include "llvm/ADT/PointerUnion.h"
@@ -41,7 +42,7 @@ class APINotesReader;
 /// external API notes files that correspond to a given header. Its primary
 /// operation is \c findAPINotes(), which finds the API notes reader that
 /// provides information about the declarations at that location.
-class APINotesManager {
+class CLANG_ABI APINotesManager {
   using ReaderEntry = llvm::PointerUnion<DirectoryEntryRef, APINotesReader *>;
 
   SourceManager &SM;
diff --git a/clang/include/clang/APINotes/APINotesReader.h b/clang/include/clang/APINotes/APINotesReader.h
index baf63340640242..58ee2857c7930f 100644
--- a/clang/include/clang/APINotes/APINotesReader.h
+++ b/clang/include/clang/APINotes/APINotesReader.h
@@ -16,6 +16,7 @@
 #define LLVM_CLANG_APINOTES_READER_H
 
 #include "clang/APINotes/Types.h"
+#include "clang/Support/Compiler.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/VersionTuple.h"
 #include <memory>
@@ -25,7 +26,7 @@ namespace api_notes {
 
 /// A class that reads API notes data from a binary file that was written by
 /// the \c APINotesWriter.
-class APINotesReader {
+class CLANG_ABI APINotesReader {
   class Implementation;
   std::unique_ptr<Implementation> Implementation;
 
diff --git a/clang/include/clang/APINotes/APINotesWriter.h b/clang/include/clang/APINotes/APINotesWriter.h
index 3cc16c3d959faf..b8b45a89dcfc8b 100644
--- a/clang/include/clang/APINotes/APINotesWriter.h
+++ b/clang/include/clang/APINotes/APINotesWriter.h
@@ -16,6 +16,7 @@
 #define LLVM_CLANG_APINOTES_WRITER_H
 
 #include "clang/APINotes/Types.h"
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/StringRef.h"
 #include "llvm/Support/VersionTuple.h"
 #include "llvm/Support/raw_ostream.h"
@@ -29,7 +30,7 @@ namespace api_notes {
 
 /// A class that writes API notes data to a binary representation that can be
 /// read by the \c APINotesReader.
-class APINotesWriter {
+class CLANG_ABI APINotesWriter {
   class Implementation;
   std::unique_ptr<Implementation> Implementation;
 
diff --git a/clang/include/clang/APINotes/APINotesYAMLCompiler.h b/clang/include/clang/APINotes/APINotesYAMLCompiler.h
index 9c24ed85b6a124..3954cf347e8244 100644
--- a/clang/include/clang/APINotes/APINotesYAMLCompiler.h
+++ b/clang/include/clang/APINotes/APINotesYAMLCompiler.h
@@ -9,6 +9,7 @@
 #ifndef LLVM_CLANG_APINOTES_APINOTESYAMLCOMPILER_H
 #define LLVM_CLANG_APINOTES_APINOTESYAMLCOMPILER_H
 
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/StringRef.h"
 #include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/raw_ostream.h"
@@ -22,10 +23,10 @@ namespace api_notes {
 /// Parses the APINotes YAML content and writes the representation back to the
 /// specified stream.  This provides a means of testing the YAML processing of
 /// the APINotes format.
-bool parseAndDumpAPINotes(llvm::StringRef YI, llvm::raw_ostream &OS);
+CLANG_ABI bool parseAndDumpAPINotes(llvm::StringRef YI, llvm::raw_ostream &OS);
 
 /// Converts API notes from YAML format to binary format.
-bool compileAPINotes(llvm::StringRef YAMLInput, const FileEntry *SourceFile,
+CLANG_ABI bool compileAPINotes(llvm::StringRef YAMLInput, const FileEntry *SourceFile,
                      llvm::raw_ostream &OS,
                      llvm::SourceMgr::DiagHandlerTy DiagHandler = nullptr,
                      void *DiagHandlerCtxt = nullptr);
diff --git a/clang/include/clang/APINotes/Types.h b/clang/include/clang/APINotes/Types.h
index 89889910d1a073..574406586c4674 100644
--- a/clang/include/clang/APINotes/Types.h
+++ b/clang/include/clang/APINotes/Types.h
@@ -10,6 +10,7 @@
 #define LLVM_CLANG_APINOTES_TYPES_H
 
 #include "clang/Basic/Specifiers.h"
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/ArrayRef.h"
 #include "llvm/ADT/StringRef.h"
 #include <climits>
@@ -49,7 +50,7 @@ enum class SwiftNewTypeKind {
 /// Describes API notes data for any entity.
 ///
 /// This is used as the base of all API notes.
-class CommonEntityInfo {
+class CLANG_ABI CommonEntityInfo {
 public:
   /// Message to use when this entity is unavailable.
   std::string UnavailableMsg;
@@ -132,7 +133,7 @@ inline bool operator!=(const CommonEntityInfo &LHS,
 }
 
 /// Describes API notes for types.
-class CommonTypeInfo : public CommonEntityInfo {
+class CLANG_ABI CommonTypeInfo : public CommonEntityInfo {
   /// The Swift type to which a given type is bridged.
   ///
   /// Reflects the swift_bridge attribute.
@@ -194,7 +195,7 @@ inline bool operator!=(const CommonTypeInfo &LHS, const CommonTypeInfo &RHS) {
 
 /// Describes API notes data for an Objective-C class or protocol or a C++
 /// namespace.
-class ContextInfo : public CommonTypeInfo {
+class CLANG_ABI ContextInfo : public CommonTypeInfo {
   /// Whether this class has a default nullability.
   LLVM_PREFERRED_TYPE(bool)
   unsigned HasDefaultNullability : 1;
@@ -301,7 +302,7 @@ inline bool operator!=(const ContextInfo &LHS, const ContextInfo &RHS) {
 }
 
 /// API notes for a variable/property.
-class VariableInfo : public CommonEntityInfo {
+class CLANG_ABI VariableInfo : public CommonEntityInfo {
   /// Whether this property has been audited for nullability.
   LLVM_PREFERRED_TYPE(bool)
   unsigned NullabilityAudited : 1;
@@ -358,7 +359,7 @@ inline bool operator!=(const VariableInfo &LHS, const VariableInfo &RHS) {
 }
 
 /// Describes API notes data for an Objective-C property.
-class ObjCPropertyInfo : public VariableInfo {
+class CLANG_ABI ObjCPropertyInfo : public VariableInfo {
   LLVM_PREFERRED_TYPE(bool)
   unsigned SwiftImportAsAccessorsSpecified : 1;
   LLVM_PREFERRED_TYPE(bool)
@@ -416,7 +417,7 @@ inline bool operator!=(const ObjCPropertyInfo &LHS,
 }
 
 /// Describes a function or method parameter.
-class ParamInfo : public VariableInfo {
+class CLANG_ABI ParamInfo : public VariableInfo {
   /// Whether noescape was specified.
   LLVM_PREFERRED_TYPE(bool)
   unsigned NoEscapeSpecified : 1;
@@ -486,7 +487,7 @@ inline bool operator!=(const ParamInfo &LHS, const ParamInfo &RHS) {
 }
 
 /// API notes for a function or method.
-class FunctionInfo : public CommonEntityInfo {
+class CLANG_ABI FunctionInfo : public CommonEntityInfo {
 private:
   static constexpr const uint64_t NullabilityKindMask = 0x3;
   static constexpr const unsigned NullabilityKindSize = 2;
@@ -606,7 +607,7 @@ inline bool operator!=(const FunctionInfo &LHS, const FunctionInfo &RHS) {
 }
 
 /// Describes API notes data for an Objective-C method.
-class ObjCMethodInfo : public FunctionInfo {
+class CLANG_ABI ObjCMethodInfo : public FunctionInfo {
 public:
   /// Whether this is a designated initializer of its class.
   LLVM_PREFERRED_TYPE(bool)
@@ -675,7 +676,7 @@ class EnumConstantInfo : public CommonEntityInfo {
 };
 
 /// Describes API notes data for a tag.
-class TagInfo : public CommonTypeInfo {
+class CLANG_ABI TagInfo : public CommonTypeInfo {
   LLVM_PREFERRED_TYPE(bool)
   unsigned HasFlagEnum : 1;
   LLVM_PREFERRED_TYPE(bool)
@@ -765,7 +766,7 @@ inline bool operator!=(const TagInfo &LHS, const TagInfo &RHS) {
 }
 
 /// Describes API notes data for a typedef.
-class TypedefInfo : public CommonTypeInfo {
+class CLANG_ABI TypedefInfo : public CommonTypeInfo {
 public:
   std::optional<SwiftNewTypeKind> SwiftWrapper;
 
diff --git a/clang/include/clang/ARCMigrate/ARCMT.h b/clang/include/clang/ARCMigrate/ARCMT.h
index 2b950e3d2cc2bf..dc078101e371ff 100644
--- a/clang/include/clang/ARCMigrate/ARCMT.h
+++ b/clang/include/clang/ARCMigrate/ARCMT.h
@@ -12,6 +12,7 @@
 #include "clang/ARCMigrate/FileRemapper.h"
 #include "clang/Basic/SourceLocation.h"
 #include "clang/Frontend/CompilerInvocation.h"
+#include "clang/Support/Compiler.h"
 
 namespace clang {
   class ASTContext;
@@ -37,7 +38,7 @@ namespace arcmt {
 /// the pre-migration ARC diagnostics.
 ///
 /// \returns false if no error is produced, true otherwise.
-bool
+CLANG_ABI bool
 checkForManualIssues(CompilerInvocation &CI, const FrontendInputFile &Input,
                      std::shared_ptr<PCHContainerOperations> PCHContainerOps,
                      DiagnosticConsumer *DiagClient,
@@ -48,7 +49,7 @@ checkForManualIssues(CompilerInvocation &CI, const FrontendInputFile &Input,
 /// applies automatic modifications to source files to conform to ARC.
 ///
 /// \returns false if no error is produced, true otherwise.
-bool
+CLANG_ABI bool
 applyTransformations(CompilerInvocation &origCI,
                      const FrontendInputFile &Input,
                      std::shared_ptr<PCHContainerOperations> PCHContainerOps,
@@ -65,7 +66,7 @@ applyTransformations(CompilerInvocation &origCI,
 /// the pre-migration ARC diagnostics.
 ///
 /// \returns false if no error is produced, true otherwise.
-bool migrateWithTemporaryFiles(
+CLANG_ABI bool migrateWithTemporaryFiles(
     CompilerInvocation &origCI, const FrontendInputFile &Input,
     std::shared_ptr<PCHContainerOperations> PCHContainerOps,
     DiagnosticConsumer *DiagClient, StringRef outputDir,
@@ -75,7 +76,7 @@ bool migrateWithTemporaryFiles(
 /// migrateWithTemporaryFiles produced.
 ///
 /// \returns false if no error is produced, true otherwise.
-bool getFileRemappings(std::vector<std::pair<std::string,std::string> > &remap,
+CLANG_ABI bool getFileRemappings(std::vector<std::pair<std::string,std::string> > &remap,
                        StringRef outputDir,
                        DiagnosticConsumer *DiagClient);
 
@@ -83,17 +84,17 @@ bool getFileRemappings(std::vector<std::pair<std::string,std::string> > &remap,
 /// info.
 ///
 /// \returns false if no error is produced, true otherwise.
-bool getFileRemappingsFromFileList(
+CLANG_ABI bool getFileRemappingsFromFileList(
                         std::vector<std::pair<std::string,std::string> > &remap,
                         ArrayRef<StringRef> remapFiles,
                         DiagnosticConsumer *DiagClient);
 
 typedef void (*TransformFn)(MigrationPass &pass);
 
-std::vector<TransformFn> getAllTransformations(LangOptions::GCMode OrigGCMode,
+CLANG_ABI std::vector<TransformFn> getAllTransformations(LangOptions::GCMode OrigGCMode,
                                                bool NoFinalizeRemoval);
 
-class MigrationProcess {
+class CLANG_ABI MigrationProcess {
   CompilerInvocation OrigCI;
   std::shared_ptr<PCHContainerOperations> PCHContainerOps;
   DiagnosticConsumer *DiagClient;
@@ -107,7 +108,7 @@ class MigrationProcess {
                    DiagnosticConsumer *diagClient,
                    StringRef outputDir = StringRef());
 
-  class RewriteListener {
+  class CLANG_ABI RewriteListener {
   public:
     virtual ~RewriteListener();
 
diff --git a/clang/include/clang/ARCMigrate/ARCMTActions.h b/clang/include/clang/ARCMigrate/ARCMTActions.h
index 714f4b33db446b..50c6142078f5c8 100644
--- a/clang/include/clang/ARCMigrate/ARCMTActions.h
+++ b/clang/include/clang/ARCMigrate/ARCMTActions.h
@@ -11,12 +11,13 @@
 
 #include "clang/ARCMigrate/FileRemapper.h"
 #include "clang/Frontend/FrontendAction.h"
+#include "clang/Support/Compiler.h"
 #include <memory>
 
 namespace clang {
 namespace arcmt {
 
-class CheckAction : public WrapperFrontendAction {
+class CLANG_ABI CheckAction : public WrapperFrontendAction {
 protected:
   bool BeginInvocation(CompilerInstance &CI) override;
 
@@ -24,7 +25,7 @@ class CheckAction : public WrapperFrontendAction {
   CheckAction(std::unique_ptr<FrontendAction> WrappedAction);
 };
 
-class ModifyAction : public WrapperFrontendAction {
+class CLANG_ABI ModifyAction : public WrapperFrontendAction {
 protected:
   bool BeginInvocation(CompilerInstance &CI) override;
 
@@ -32,7 +33,7 @@ class ModifyAction : public WrapperFrontendAction {
   ModifyAction(std::unique_ptr<FrontendAction> WrappedAction);
 };
 
-class MigrateSourceAction : public ASTFrontendAction {
+class CLANG_ABI MigrateSourceAction : public ASTFrontendAction {
   FileRemapper Remapper;
 protected:
   bool BeginInvocation(CompilerInstance &CI) override;
@@ -40,7 +41,7 @@ class MigrateSourceAction : public ASTFrontendAction {
                                                  StringRef InFile) override;
 };
 
-class MigrateAction : public WrapperFrontendAction {
+class CLANG_ABI MigrateAction : public WrapperFrontendAction {
   std::string MigrateDir;
   std::string PlistOut;
   bool EmitPremigrationARCErrors;
@@ -55,7 +56,7 @@ class MigrateAction : public WrapperFrontendAction {
 };
 
 /// Migrates to modern ObjC syntax.
-class ObjCMigrateAction : public WrapperFrontendAction {
+class CLANG_ABI ObjCMigrateAction : public WrapperFrontendAction {
   std::string MigrateDir;
   unsigned    ObjCMigAction;
   FileRemapper Remapper;
diff --git a/clang/include/clang/ARCMigrate/FileRemapper.h b/clang/include/clang/ARCMigrate/FileRemapper.h
index afcee363516a21..3c9f706a75cf38 100644
--- a/clang/include/clang/ARCMigrate/FileRemapper.h
+++ b/clang/include/clang/ARCMigrate/FileRemapper.h
@@ -11,6 +11,7 @@
 
 #include "clang/Basic/FileEntry.h"
 #include "clang/Basic/LLVM.h"
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/DenseMap.h"
 #include "llvm/ADT/STLExtras.h"
 #include "llvm/ADT/StringRef.h"
@@ -29,7 +30,7 @@ namespace clang {
 
 namespace arcmt {
 
-class FileRemapper {
+class CLANG_ABI FileRemapper {
   // FIXME: Reuse the same FileManager for multiple ASTContexts.
   std::unique_ptr<FileManager> FileMgr;
 
diff --git a/clang/include/clang/AST/APNumericStorage.h b/clang/include/clang/AST/APNumericStorage.h
index 95eddbcd86e839..ae634d46dfea2b 100644
--- a/clang/include/clang/AST/APNumericStorage.h
+++ b/clang/include/clang/AST/APNumericStorage.h
@@ -9,6 +9,7 @@
 #ifndef LLVM_CLANG_AST_APNUMERICSTORAGE_H
 #define LLVM_CLANG_AST_APNUMERICSTORAGE_H
 
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/APFloat.h"
 #include "llvm/ADT/APInt.h"
 
@@ -23,7 +24,7 @@ class ASTContext;
 /// to allocate IntegerLiteral/FloatingLiteral nodes the memory associated with
 /// the APFloat/APInt values will never get freed. APNumericStorage uses
 /// ASTContext's allocator for memory allocation.
-class APNumericStorage {
+class CLANG_ABI APNumericStorage {
   union {
     uint64_t VAL;   ///< Used to store the <= 64 bits integer value.
     uint64_t *pVal; ///< Used to store the >64 bits integer value.
diff --git a/clang/include/clang/AST/APValue.h b/clang/include/clang/AST/APValue.h
index c4206b73b11562..fc6baf92a90202 100644
--- a/clang/include/clang/AST/APValue.h
+++ b/clang/include/clang/AST/APValue.h
@@ -14,6 +14,7 @@
 #define LLVM_CLANG_AST_APVALUE_H
 
 #include "clang/Basic/LLVM.h"
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/APFixedPoint.h"
 #include "llvm/ADT/APFloat.h"
 #include "llvm/ADT/APSInt.h"
@@ -41,7 +42,7 @@ template <typename T> class BasicReaderBase;
   class QualType;
 
 /// Symbolic representation of typeid(T) for some type T.
-class TypeInfoLValue {
+class CLANG_ABI TypeInfoLValue {
   const Type *T;
 
 public:
@@ -119,7 +120,7 @@ namespace clang {
 /// APValue - This class implements a discriminated union of [uninitialized]
 /// [APSInt] [APFloat], [Complex APSInt] [Complex APFloat], [Expr + Offset],
 /// [Vector: N * APValue], [Array: N * APValue]
-class APValue {
+class CLANG_ABI APValue {
   typedef llvm::APFixedPoint APFixedPoint;
   typedef llvm::APSInt APSInt;
   typedef llvm::APFloat APFloat;
@@ -143,7 +144,7 @@ class APValue {
     AddrLabelDiff
   };
 
-  class LValueBase {
+  class CLANG_ABI LValueBase {
     typedef llvm::PointerUnion<const ValueDecl *, const Expr *, TypeInfoLValue,
                                DynamicAllocLValue>
         PtrTy;
@@ -179,11 +180,11 @@ class APValue {
 
     QualType getType() const;
 
-    friend bool operator==(const LValueBase &LHS, const LValueBase &RHS);
+    friend CLANG_ABI bool operator==(const LValueBase &LHS, const LValueBase &RHS);
     friend bool operator!=(const LValueBase &LHS, const LValueBase &RHS) {
       return !(LHS == RHS);
     }
-    friend llvm::hash_code hash_value(const LValueBase &Base);
+    friend CLANG_ABI llvm::hash_code hash_value(const LValueBase &Base);
     friend struct llvm::DenseMapInfo<LValueBase>;
 
   private:
@@ -205,7 +206,7 @@ class APValue {
   typedef llvm::PointerIntPair<const Decl *, 1, bool> BaseOrMemberType;
 
   /// A non-discriminated union of a base, field, or array index.
-  class LValuePathEntry {
+  class CLANG_ABI LValuePathEntry {
     static_assert(sizeof(uintptr_t) <= sizeof(uint64_t),
                   "pointer doesn't fit in 64 bits?");
     uint64_t Value;
@@ -237,7 +238,7 @@ class APValue {
       return llvm::hash_value(A.Value);
     }
   };
-  class LValuePathSerializationHelper {
+  class CLANG_ABI LValuePathSerializationHelper {
     const void *Ty;
 
   public:
@@ -274,7 +275,7 @@ class APValue {
     Vec &operator=(const Vec &) = delete;
     ~Vec() { delete[] Elts; }
   };
-  struct Arr {
+  struct CLANG_ABI Arr {
     APValue *Elts;
     unsigned NumElts, ArrSize;
     Arr(unsigned NumElts, unsigned ArrSize);
@@ -282,7 +283,7 @@ class APValue {
     Arr &operator=(const Arr &) = delete;
     ~Arr();
   };
-  struct StructData {
+  struct CLANG_ABI StructData {
     APValue *Elts;
     unsigned NumBases;
     unsigned NumFields;
@@ -291,7 +292,7 @@ class APValue {
     StructData &operator=(const StructData &) = delete;
     ~StructData();
   };
-  struct UnionData {
+  struct CLANG_ABI UnionData {
     const FieldDecl *Field;
     APValue *Value;
     UnionData();
@@ -702,7 +703,7 @@ class APValue {
 } // end namespace clang.
 
 namespace llvm {
-template<> struct DenseMapInfo<clang::APValue::LValueBase> {
+template<> struct CLANG_ABI DenseMapInfo<clang::APValue::LValueBase> {
   static clang::APValue::LValueBase getEmptyKey();
   static clang::APValue::LValueBase getTombstoneKey();
   static unsigned getHashValue(const clang::APValue::LValueBase &Base);
diff --git a/clang/include/clang/AST/ASTConcept.h b/clang/include/clang/AST/ASTConcept.h
index 00500e214f4ce6..59b0a8e9d96a9d 100644
--- a/clang/include/clang/AST/ASTConcept.h
+++ b/clang/include/clang/AST/ASTConcept.h
@@ -18,6 +18,7 @@
 #include "clang/AST/NestedNameSpecifier.h"
 #include "clang/AST/TemplateBase.h"
 #include "clang/Basic/SourceLocation.h"
+#include "clang/Support/Compiler.h"
 #include "llvm/ADT/FoldingSet.h"
 #include "llvm/ADT/PointerUnion.h"
 #include "llvm/ADT/SmallVector.h"
@@ -32,7 +33,7 @@ struct PrintingPolicy;
 
 /// The result of a constraint satisfaction check, containing the necessary
 /// information to diagnose an unsatisfied constraint.
-class ConstraintSatisfaction : public llvm::FoldingSetNode {
+class CLANG_ABI ConstraintSatisfaction : public llvm::FoldingSetNode {
   // The template-like entity that 'owns' the constraint checked here (can be a
   // constrained entity or a concept).
   const NamedDecl *ConstraintOwner = nullptr;
@@ -84,7 +85,7 @@ using UnsatisfiedConstraintRecord =
 /// necessary information to diagnose an unsatisfied constraint.
 ///
 /// This is safe to store in an AST node, as opposed to ConstraintSatisfaction.
-struct ASTConstraintSatisfaction final :
+struct CLANG_ABI ASTConstraintSatisfaction final :
     llvm::TrailingObjects<ASTConstraintSatisfaction,
                           UnsatisfiedConstraintRecord> {
   std::size_t NumRecords;
@@ -121,7 +122,7 @@ struct ASTConstraintSatisfaction final :
 ///
 ///   template <std::derives_from<Expr> T> void dump();
 ///             ~~~~~~~~~~~~~~~~~~~~~~~ (in TemplateTypeParmDecl)
-class ConceptReference {
+class CLANG_ABI ConceptReference {
   // \brief The optional nested name specifier used when naming the concept.
   NestedNameSpecifierLoc NestedNameSpec;
 
diff --git a/clang/include/clang/AST/ASTConsumer.h b/clang/include/clang/AST/ASTConsumer.h
index 447f2592d23595..735c7e549f5cac 100644
--- a/clang/include/clang/AST/ASTConsumer.h
+++ b/clang/include/clang/AST/ASTConsumer.h
@@ -13,6 +13,7 @@
 #ifndef LLVM_CLANG_AST_ASTCONSUMER_H
 #define LLVM_CLANG_AST_ASTCONSUMER_H
 
+#include "clang/Support/Compiler.h"
 namespace clang {
   class ASTContext;
   class CXXMethodDecl;
@@ -31,7 +32,7 @@ namespace clang {
 /// ASTCons...
[truncated]

@zygoloid

This comment was marked as resolved.

@mydeveloperday
Copy link
Contributor

Looking at Format.h (the only file I'm interested in), there feels to me to be things in the ABI that I wouldn't expect to be called externally, I don't know enough about what's involved in creating a DLL ABI but I wouldn't want some of the clang-format functions to be in a situation where we could change their parameters because it would be ABI breaking. @owenca thoughts?

@fsfod
Copy link
Contributor Author

fsfod commented Oct 2, 2024

If your stuck with having to include a class or function it in a public header there will be a macro you can add to it so the Clang tool skips adding visibility attributes added to it. At the file or folder level they can be excluded by adding them to the export config file used by the tool that would be stored in the include folder root.

@compnerd
Copy link
Member

compnerd commented Oct 2, 2024

Looking at Format.h (the only file I'm interested in), there feels to me to be things in the ABI that I wouldn't expect to be called externally, I don't know enough about what's involved in creating a DLL ABI but I wouldn't want some of the clang-format functions to be in a situation where we could change their parameters because it would be ABI breaking. @owenca thoughts?

Note that ABI stability is well outside of the scope of this project. The annotations here are to enable the use of a single clang DLL that would allow us to share that across all the tools to shrink the distribution size as well as gain some page sharing between different tools when running. This might also help us restore some additional backends to the prebuilt Windows toolchain distributions from llvm.org.

@efriedma-quic
Copy link
Collaborator

Is there a plan for maintaining these annotations long-term? Like, should there be a pre-commit action to verify that all the annotations are up-to-date?

@rnk
Copy link
Collaborator

rnk commented Oct 2, 2024

Is there a plan for maintaining these annotations long-term? Like, should there be a pre-commit action to verify that all the annotations are up-to-date?

pre-commit actions are expensive, but I think we could afford to do something here. It is not hard to set up a DLL build of an ELF DSO build that uses these annotations, and it's cheaper than a fully static build.

@fsfod
Copy link
Contributor Author

fsfod commented Oct 2, 2024

Processing just header is also much faster than a full build and I think it would only have to run on changed headers and source files for a PR.

@fsfod fsfod force-pushed the exported-api/generated-macros-clang branch from bdad289 to 22b9f80 Compare October 14, 2024 18:47
@vgvassilev
Copy link
Contributor

Processing just header is also much faster than a full build and I think it would only have to run on changed headers and source files for a PR.

Any ideas how to implement that check? If we have a draft implementation we can check with the the ci folks how to deploy it...

@fsfod fsfod marked this pull request as ready for review October 16, 2024 15:07
@llvmbot llvmbot added the ClangIR Anything related to the ClangIR project label Oct 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backend:AArch64 backend:AMDGPU backend:ARM backend:Hexagon backend:loongarch backend:PowerPC backend:RISC-V backend:SystemZ backend:WebAssembly backend:X86 clang:analysis clang:codegen clang:dataflow Clang Dataflow Analysis framework - https://clang.llvm.org/docs/DataFlowAnalysisIntro.html clang:frontend Language frontend issues, e.g. anything involving "Sema" clang:modules C++20 modules and Clang Header Modules clang:openmp OpenMP related changes to Clang clang:static analyzer clang Clang issues not falling into any other category clang-format ClangIR Anything related to the ClangIR project HLSL HLSL Language Support xray
Projects
Status: No status
Development

Successfully merging this pull request may close these issues.

8 participants