[PATCH] D152051: libclang-cpp: Add external visibility attribute to all classes

Tom Stellard via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Jun 2 19:42:56 PDT 2023


tstellar created this revision.
Herald added subscribers: cfe-commits, PiotrZSL, luke, steakhal, carlosgalvezp, frasercrmck, wenlei, luismarques, apazos, sameer.abuasal, s.egerton, Jim, mstorsjo, jocewei, PkmX, arphaman, the_o, brucehoult, MartinMosbeck, rogfer01, edward-jones, zzheng, jrtc27, niosHD, sabuasal, simoncook, johnrusso, rbar, asb, kbarton, nemanjai.
Herald added a reviewer: sscalpone.
Herald added a reviewer: aaron.ballman.
Herald added a reviewer: NoQ.
Herald added a reviewer: ributzka.
Herald added a reviewer: njames93.
Herald added projects: All, clang, clang-format.
Herald added reviewers: rymiel, HazardyKnusperkeks, owenpan, MyDeveloperDay.
tstellar requested review of this revision.
Herald added subscribers: pcwang-thead, MaskRay.
Herald added a reviewer: dang.
Herald added projects: LLVM, clang-tools-extra.
Herald added a comment.

NOTE: Clang-Format Team Automated Review Comment

Your review contains a change to clang/include/clang/Format/Format.h but does not contain an update to ClangFormatStyleOptions.rst

ClangFormatStyleOptions.rst is generated via clang/docs/tools/dump_format_style.py,  please run this to regenerate the .rst

You can validate that the rst is valid by running.

  ./docs/tools/dump_format_style.py
  mkdir -p html
  /usr/bin/sphinx-build -n ./docs ./html


Herald added a comment.

NOTE: Clang-Format Team Automated Review Comment

It looks like your clang-format review does not contain any unit tests, please try to ensure all code changes have a unit test (unless this is an `NFC` or refactoring, adding documentation etc..)

Add your unit tests in `clang/unittests/Format` and you can build with `ninja FormatTests`.  We recommend using the `verifyFormat(xxx)` format of unit tests rather than `EXPECT_EQ` as this will ensure you change is tolerant to random whitespace changes (see FormatTest.cpp as an example)

For situations where your change is altering the TokenAnnotator.cpp which can happen if you are trying to improve the annotation phase to ensure we are correctly identifying the type of a token, please add a token annotator test in `TokenAnnotatorTest.cpp`


Also compile with -fvisiblity=hidden.  This in theory should be NFC,
but it's possible I missed adding LLVM_EXTERNAL_VISIBILITY to some of
the symbols.  This is the first step towards reducing the amount of
public symbols exposed in libclang-cpp.so, so in the future we will
be dropping LLVM_EXTERNAL_VISIBILITY from classes and functions that
we don't want to make publicly available.

Before and after symbol counts:

$ nm -gD before/libclang-cpp.so | wc -l
30459
$ nm -gD after/libclang-cpp.so | wc -l
20875


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D152051

Files:
  clang-tools-extra/clang-tidy/ClangTidyCheck.h
  clang-tools-extra/clang-tidy/ClangTidyModule.h
  clang/CMakeLists.txt
  clang/include/clang-c/FatalErrorHandler.h
  clang/include/clang/APINotes/APINotesYAMLCompiler.h
  clang/include/clang/APINotes/Types.h
  clang/include/clang/ARCMigrate/ARCMT.h
  clang/include/clang/ARCMigrate/ARCMTActions.h
  clang/include/clang/ARCMigrate/FileRemapper.h
  clang/include/clang/AST/APValue.h
  clang/include/clang/AST/ASTConcept.h
  clang/include/clang/AST/ASTConsumer.h
  clang/include/clang/AST/ASTContext.h
  clang/include/clang/AST/ASTContextAllocate.h
  clang/include/clang/AST/ASTDiagnostic.h
  clang/include/clang/AST/ASTDumper.h
  clang/include/clang/AST/ASTDumperUtils.h
  clang/include/clang/AST/ASTImportError.h
  clang/include/clang/AST/ASTImporter.h
  clang/include/clang/AST/ASTImporterLookupTable.h
  clang/include/clang/AST/ASTImporterSharedState.h
  clang/include/clang/AST/ASTMutationListener.h
  clang/include/clang/AST/ASTNodeTraverser.h
  clang/include/clang/AST/ASTStructuralEquivalence.h
  clang/include/clang/AST/ASTTypeTraits.h
  clang/include/clang/AST/ASTUnresolvedSet.h
  clang/include/clang/AST/ASTVector.h
  clang/include/clang/AST/AbstractBasicReader.h
  clang/include/clang/AST/AbstractBasicWriter.h
  clang/include/clang/AST/Attr.h
  clang/include/clang/AST/AttrIterator.h
  clang/include/clang/AST/AttrVisitor.h
  clang/include/clang/AST/Availability.h
  clang/include/clang/AST/BaseSubobject.h
  clang/include/clang/AST/CXXInheritance.h
  clang/include/clang/AST/CanonicalType.h
  clang/include/clang/AST/CharUnits.h
  clang/include/clang/AST/Comment.h
  clang/include/clang/AST/CommentBriefParser.h
  clang/include/clang/AST/CommentCommandTraits.h
  clang/include/clang/AST/CommentLexer.h
  clang/include/clang/AST/CommentParser.h
  clang/include/clang/AST/CommentSema.h
  clang/include/clang/AST/CommentVisitor.h
  clang/include/clang/AST/ComparisonCategories.h
  clang/include/clang/AST/ComputeDependence.h
  clang/include/clang/AST/CurrentSourceLocExprScope.h
  clang/include/clang/AST/DataCollection.h
  clang/include/clang/AST/Decl.h
  clang/include/clang/AST/DeclAccessPair.h
  clang/include/clang/AST/DeclBase.h
  clang/include/clang/AST/DeclCXX.h
  clang/include/clang/AST/DeclContextInternals.h
  clang/include/clang/AST/DeclFriend.h
  clang/include/clang/AST/DeclGroup.h
  clang/include/clang/AST/DeclLookups.h
  clang/include/clang/AST/DeclObjC.h
  clang/include/clang/AST/DeclOpenMP.h
  clang/include/clang/AST/DeclTemplate.h
  clang/include/clang/AST/DeclVisitor.h
  clang/include/clang/AST/DeclarationName.h
  clang/include/clang/AST/DependenceFlags.h
  clang/include/clang/AST/DependentDiagnostic.h
  clang/include/clang/AST/EvaluatedExprVisitor.h
  clang/include/clang/AST/Expr.h
  clang/include/clang/AST/ExprCXX.h
  clang/include/clang/AST/ExprConcepts.h
  clang/include/clang/AST/ExprObjC.h
  clang/include/clang/AST/ExprOpenMP.h
  clang/include/clang/AST/ExternalASTMerger.h
  clang/include/clang/AST/ExternalASTSource.h
  clang/include/clang/AST/FormatString.h
  clang/include/clang/AST/GlobalDecl.h
  clang/include/clang/AST/JSONNodeDumper.h
  clang/include/clang/AST/LambdaCapture.h
  clang/include/clang/AST/LexicallyOrderedRecursiveASTVisitor.h
  clang/include/clang/AST/LocInfoType.h
  clang/include/clang/AST/Mangle.h
  clang/include/clang/AST/MangleNumberingContext.h
  clang/include/clang/AST/NSAPI.h
  clang/include/clang/AST/NestedNameSpecifier.h
  clang/include/clang/AST/NonTrivialTypeVisitor.h
  clang/include/clang/AST/ODRDiagsEmitter.h
  clang/include/clang/AST/ODRHash.h
  clang/include/clang/AST/OSLog.h
  clang/include/clang/AST/OpenMPClause.h
  clang/include/clang/AST/OptionalDiagnostic.h
  clang/include/clang/AST/ParentMap.h
  clang/include/clang/AST/ParentMapContext.h
  clang/include/clang/AST/PrettyDeclStackTrace.h
  clang/include/clang/AST/PrettyPrinter.h
  clang/include/clang/AST/QualTypeNames.h
  clang/include/clang/AST/Randstruct.h
  clang/include/clang/AST/RawCommentList.h
  clang/include/clang/AST/RecordLayout.h
  clang/include/clang/AST/RecursiveASTVisitor.h
  clang/include/clang/AST/Redeclarable.h
  clang/include/clang/AST/SelectorLocationsKind.h
  clang/include/clang/AST/Stmt.h
  clang/include/clang/AST/StmtCXX.h
  clang/include/clang/AST/StmtGraphTraits.h
  clang/include/clang/AST/StmtIterator.h
  clang/include/clang/AST/StmtObjC.h
  clang/include/clang/AST/StmtOpenMP.h
  clang/include/clang/AST/StmtVisitor.h
  clang/include/clang/AST/TemplateArgumentVisitor.h
  clang/include/clang/AST/TemplateBase.h
  clang/include/clang/AST/TemplateName.h
  clang/include/clang/AST/TextNodeDumper.h
  clang/include/clang/AST/Type.h
  clang/include/clang/AST/TypeLoc.h
  clang/include/clang/AST/TypeLocVisitor.h
  clang/include/clang/AST/TypeOrdering.h
  clang/include/clang/AST/TypeVisitor.h
  clang/include/clang/AST/UnresolvedSet.h
  clang/include/clang/AST/VTTBuilder.h
  clang/include/clang/AST/VTableBuilder.h
  clang/include/clang/ASTMatchers/ASTMatchFinder.h
  clang/include/clang/ASTMatchers/ASTMatchers.h
  clang/include/clang/ASTMatchers/ASTMatchersInternal.h
  clang/include/clang/ASTMatchers/ASTMatchersMacros.h
  clang/include/clang/ASTMatchers/Dynamic/Diagnostics.h
  clang/include/clang/ASTMatchers/Dynamic/Parser.h
  clang/include/clang/ASTMatchers/Dynamic/Registry.h
  clang/include/clang/ASTMatchers/Dynamic/VariantValue.h
  clang/include/clang/ASTMatchers/GtestMatchers.h
  clang/include/clang/Analysis/Analyses/CFGReachabilityAnalysis.h
  clang/include/clang/Analysis/Analyses/CalledOnceCheck.h
  clang/include/clang/Analysis/Analyses/Consumed.h
  clang/include/clang/Analysis/Analyses/Dominators.h
  clang/include/clang/Analysis/Analyses/ExprMutationAnalyzer.h
  clang/include/clang/Analysis/Analyses/LiveVariables.h
  clang/include/clang/Analysis/Analyses/PostOrderCFGView.h
  clang/include/clang/Analysis/Analyses/ReachableCode.h
  clang/include/clang/Analysis/Analyses/ThreadSafety.h
  clang/include/clang/Analysis/Analyses/ThreadSafetyCommon.h
  clang/include/clang/Analysis/Analyses/ThreadSafetyLogical.h
  clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h
  clang/include/clang/Analysis/Analyses/ThreadSafetyTraverse.h
  clang/include/clang/Analysis/Analyses/ThreadSafetyUtil.h
  clang/include/clang/Analysis/Analyses/UninitializedValues.h
  clang/include/clang/Analysis/Analyses/UnsafeBufferUsage.h
  clang/include/clang/Analysis/AnalysisDeclContext.h
  clang/include/clang/Analysis/AnyCall.h
  clang/include/clang/Analysis/BodyFarm.h
  clang/include/clang/Analysis/CFG.h
  clang/include/clang/Analysis/CFGStmtMap.h
  clang/include/clang/Analysis/CallGraph.h
  clang/include/clang/Analysis/CloneDetection.h
  clang/include/clang/Analysis/CodeInjector.h
  clang/include/clang/Analysis/ConstructionContext.h
  clang/include/clang/Analysis/DomainSpecific/CocoaConventions.h
  clang/include/clang/Analysis/DomainSpecific/ObjCNoReturn.h
  clang/include/clang/Analysis/FlowSensitive/Arena.h
  clang/include/clang/Analysis/FlowSensitive/CFGMatchSwitch.h
  clang/include/clang/Analysis/FlowSensitive/ControlFlowContext.h
  clang/include/clang/Analysis/FlowSensitive/DataflowAnalysis.h
  clang/include/clang/Analysis/FlowSensitive/DataflowAnalysisContext.h
  clang/include/clang/Analysis/FlowSensitive/DataflowEnvironment.h
  clang/include/clang/Analysis/FlowSensitive/DataflowValues.h
  clang/include/clang/Analysis/FlowSensitive/DataflowWorklist.h
  clang/include/clang/Analysis/FlowSensitive/DebugSupport.h
  clang/include/clang/Analysis/FlowSensitive/Logger.h
  clang/include/clang/Analysis/FlowSensitive/MatchSwitch.h
  clang/include/clang/Analysis/FlowSensitive/Models/ChromiumCheckModel.h
  clang/include/clang/Analysis/FlowSensitive/Models/UncheckedOptionalAccessModel.h
  clang/include/clang/Analysis/FlowSensitive/NoopAnalysis.h
  clang/include/clang/Analysis/FlowSensitive/NoopLattice.h
  clang/include/clang/Analysis/FlowSensitive/Solver.h
  clang/include/clang/Analysis/FlowSensitive/StorageLocation.h
  clang/include/clang/Analysis/FlowSensitive/Transfer.h
  clang/include/clang/Analysis/FlowSensitive/TypeErasedDataflowAnalysis.h
  clang/include/clang/Analysis/FlowSensitive/Value.h
  clang/include/clang/Analysis/FlowSensitive/WatchedLiteralsSolver.h
  clang/include/clang/Analysis/IssueHash.h
  clang/include/clang/Analysis/MacroExpansionContext.h
  clang/include/clang/Analysis/PathDiagnostic.h
  clang/include/clang/Analysis/ProgramPoint.h
  clang/include/clang/Analysis/RetainSummaryManager.h
  clang/include/clang/Analysis/Support/BumpVector.h
  clang/include/clang/Basic/AddressSpaces.h
  clang/include/clang/Basic/AllDiagnostics.h
  clang/include/clang/Basic/AttrSubjectMatchRules.h
  clang/include/clang/Basic/AttributeCommonInfo.h
  clang/include/clang/Basic/Builtins.h
  clang/include/clang/Basic/CharInfo.h
  clang/include/clang/Basic/CodeGenOptions.h
  clang/include/clang/Basic/Cuda.h
  clang/include/clang/Basic/DarwinSDKInfo.h
  clang/include/clang/Basic/Diagnostic.h
  clang/include/clang/Basic/DiagnosticError.h
  clang/include/clang/Basic/DiagnosticIDs.h
  clang/include/clang/Basic/DiagnosticOptions.h
  clang/include/clang/Basic/DirectoryEntry.h
  clang/include/clang/Basic/ExpressionTraits.h
  clang/include/clang/Basic/FileEntry.h
  clang/include/clang/Basic/FileManager.h
  clang/include/clang/Basic/FileSystemOptions.h
  clang/include/clang/Basic/FileSystemStatCache.h
  clang/include/clang/Basic/IdentifierTable.h
  clang/include/clang/Basic/LangOptions.h
  clang/include/clang/Basic/LangStandard.h
  clang/include/clang/Basic/MacroBuilder.h
  clang/include/clang/Basic/Module.h
  clang/include/clang/Basic/NoSanitizeList.h
  clang/include/clang/Basic/ObjCRuntime.h
  clang/include/clang/Basic/OpenCLOptions.h
  clang/include/clang/Basic/OperatorKinds.h
  clang/include/clang/Basic/OperatorPrecedence.h
  clang/include/clang/Basic/PartialDiagnostic.h
  clang/include/clang/Basic/ProfileList.h
  clang/include/clang/Basic/SanitizerSpecialCaseList.h
  clang/include/clang/Basic/Sanitizers.h
  clang/include/clang/Basic/Sarif.h
  clang/include/clang/Basic/SourceLocation.h
  clang/include/clang/Basic/SourceManager.h
  clang/include/clang/Basic/SourceManagerInternals.h
  clang/include/clang/Basic/Stack.h
  clang/include/clang/Basic/SyncScope.h
  clang/include/clang/Basic/TargetCXXABI.h
  clang/include/clang/Basic/TargetID.h
  clang/include/clang/Basic/TargetInfo.h
  clang/include/clang/Basic/TargetOptions.h
  clang/include/clang/Basic/TokenKinds.h
  clang/include/clang/Basic/Version.h
  clang/include/clang/Basic/Visibility.h
  clang/include/clang/Basic/XRayInstr.h
  clang/include/clang/Basic/XRayLists.h
  clang/include/clang/CodeGen/CGFunctionInfo.h
  clang/include/clang/CodeGen/CodeGenABITypes.h
  clang/include/clang/CodeGen/CodeGenAction.h
  clang/include/clang/CodeGen/ConstantInitBuilder.h
  clang/include/clang/CodeGen/ConstantInitFuture.h
  clang/include/clang/CodeGen/ModuleBuilder.h
  clang/include/clang/CodeGen/ObjectFilePCHContainerOperations.h
  clang/include/clang/CodeGen/SwiftCallingConv.h
  clang/include/clang/CrossTU/CrossTranslationUnit.h
  clang/include/clang/DirectoryWatcher/DirectoryWatcher.h
  clang/include/clang/Driver/Action.h
  clang/include/clang/Driver/Compilation.h
  clang/include/clang/Driver/Distro.h
  clang/include/clang/Driver/Driver.h
  clang/include/clang/Driver/InputInfo.h
  clang/include/clang/Driver/Job.h
  clang/include/clang/Driver/Multilib.h
  clang/include/clang/Driver/MultilibBuilder.h
  clang/include/clang/Driver/OffloadBundler.h
  clang/include/clang/Driver/OptionUtils.h
  clang/include/clang/Driver/Options.h
  clang/include/clang/Driver/SanitizerArgs.h
  (240 more files...)



More information about the cfe-commits mailing list