[all-commits] [llvm/llvm-project] 69fb35: [clang] Improve nested name specifier AST represen...
Matheus Izvekov via All-commits
all-commits at lists.llvm.org
Wed Jul 9 14:27:22 PDT 2025
Branch: refs/heads/users/mizvekov/name-qualification-refactor
Home: https://github.com/llvm/llvm-project
Commit: 69fb353ce7ff54595d4d7ab1d8d00e63043f7f31
https://github.com/llvm/llvm-project/commit/69fb353ce7ff54595d4d7ab1d8d00e63043f7f31
Author: Matheus Izvekov <mizvekov at gmail.com>
Date: 2025-07-09 (Wed, 09 Jul 2025)
Changed paths:
M clang-tools-extra/clang-change-namespace/ChangeNamespace.cpp
M clang-tools-extra/clang-doc/Serialize.cpp
M clang-tools-extra/clang-include-fixer/find-all-symbols/FindAllSymbols.cpp
M clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp
M clang-tools-extra/clang-tidy/bugprone/CrtpConstructorAccessibilityCheck.cpp
M clang-tools-extra/clang-tidy/bugprone/EasilySwappableParametersCheck.cpp
M clang-tools-extra/clang-tidy/bugprone/ForwardDeclarationNamespaceCheck.cpp
M clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp
M clang-tools-extra/clang-tidy/bugprone/IncorrectEnableIfCheck.cpp
M clang-tools-extra/clang-tidy/bugprone/MoveForwardingReferenceCheck.cpp
M clang-tools-extra/clang-tidy/bugprone/SizeofExpressionCheck.cpp
M clang-tools-extra/clang-tidy/cppcoreguidelines/NoSuspendWithLockCheck.cpp
M clang-tools-extra/clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp
M clang-tools-extra/clang-tidy/cppcoreguidelines/SlicingCheck.cpp
M clang-tools-extra/clang-tidy/fuchsia/MultipleInheritanceCheck.cpp
M clang-tools-extra/clang-tidy/google/AvoidCStyleCastsCheck.cpp
M clang-tools-extra/clang-tidy/google/ExplicitConstructorCheck.cpp
M clang-tools-extra/clang-tidy/google/UpgradeGoogletestCaseCheck.cpp
M clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.cpp
M clang-tools-extra/clang-tidy/misc/MisplacedConstCheck.cpp
M clang-tools-extra/clang-tidy/misc/RedundantExpressionCheck.cpp
M clang-tools-extra/clang-tidy/misc/UnusedAliasDeclsCheck.cpp
M clang-tools-extra/clang-tidy/misc/UnusedUsingDeclsCheck.cpp
M clang-tools-extra/clang-tidy/modernize/DeprecatedIosBaseAliasesCheck.cpp
M clang-tools-extra/clang-tidy/modernize/PassByValueCheck.cpp
M clang-tools-extra/clang-tidy/modernize/ReplaceAutoPtrCheck.cpp
M clang-tools-extra/clang-tidy/modernize/TypeTraitsCheck.cpp
M clang-tools-extra/clang-tidy/modernize/UseAutoCheck.cpp
M clang-tools-extra/clang-tidy/modernize/UseConstraintsCheck.cpp
M clang-tools-extra/clang-tidy/modernize/UseEmplaceCheck.cpp
M clang-tools-extra/clang-tidy/modernize/UseScopedLockCheck.cpp
M clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
M clang-tools-extra/clang-tidy/modernize/UseTransparentFunctorsCheck.cpp
M clang-tools-extra/clang-tidy/performance/NoAutomaticMoveCheck.cpp
M clang-tools-extra/clang-tidy/portability/StdAllocatorConstCheck.cpp
M clang-tools-extra/clang-tidy/readability/StaticAccessedThroughInstanceCheck.cpp
M clang-tools-extra/clang-tidy/readability/SuspiciousCallArgumentCheck.cpp
M clang-tools-extra/clang-tidy/readability/UseStdMinMaxCheck.cpp
M clang-tools-extra/clang-tidy/utils/ExceptionSpecAnalyzer.cpp
M clang-tools-extra/clang-tidy/utils/FormatStringConverter.cpp
M clang-tools-extra/clang-tidy/utils/Matchers.cpp
M clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp
M clang-tools-extra/clang-tidy/utils/TypeTraits.cpp
M clang-tools-extra/clangd/AST.cpp
M clang-tools-extra/clangd/AST.h
M clang-tools-extra/clangd/CodeComplete.cpp
M clang-tools-extra/clangd/DumpAST.cpp
M clang-tools-extra/clangd/FindTarget.cpp
M clang-tools-extra/clangd/Hover.cpp
M clang-tools-extra/clangd/IncludeFixer.cpp
M clang-tools-extra/clangd/InlayHints.cpp
M clang-tools-extra/clangd/Quality.cpp
M clang-tools-extra/clangd/Selection.cpp
M clang-tools-extra/clangd/SemanticHighlighting.cpp
M clang-tools-extra/clangd/XRefs.cpp
M clang-tools-extra/clangd/refactor/tweaks/AddUsing.cpp
M clang-tools-extra/clangd/refactor/tweaks/ExtractFunction.cpp
M clang-tools-extra/clangd/refactor/tweaks/PopulateSwitch.cpp
M clang-tools-extra/clangd/unittests/ASTTests.cpp
M clang-tools-extra/clangd/unittests/DumpASTTests.cpp
M clang-tools-extra/clangd/unittests/FindTargetTests.cpp
M clang-tools-extra/clangd/unittests/HoverTests.cpp
M clang-tools-extra/clangd/unittests/InlayHintTests.cpp
M clang-tools-extra/clangd/unittests/QualityTests.cpp
M clang-tools-extra/clangd/unittests/SelectionTests.cpp
M clang-tools-extra/include-cleaner/lib/WalkAST.cpp
M clang-tools-extra/test/clang-tidy/checkers/bugprone/copy-constructor-init.cpp
M clang-tools-extra/test/clang-tidy/checkers/bugprone/unused-local-non-trivial-variable.cpp
M clang-tools-extra/test/clang-tidy/checkers/portability/std-allocator-const.cpp
M clang/include/clang/AST/ASTConcept.h
M clang/include/clang/AST/ASTContext.h
M clang/include/clang/AST/ASTImporter.h
M clang/include/clang/AST/ASTNodeTraverser.h
M clang/include/clang/AST/ASTTypeTraits.h
M clang/include/clang/AST/AbstractBasicReader.h
M clang/include/clang/AST/AbstractBasicWriter.h
M clang/include/clang/AST/CanonicalType.h
M clang/include/clang/AST/Decl.h
M clang/include/clang/AST/DeclBase.h
M clang/include/clang/AST/DeclCXX.h
M clang/include/clang/AST/DeclObjC.h
M clang/include/clang/AST/DeclTemplate.h
M clang/include/clang/AST/DependenceFlags.h
M clang/include/clang/AST/DynamicRecursiveASTVisitor.h
M clang/include/clang/AST/Expr.h
M clang/include/clang/AST/ExprCXX.h
M clang/include/clang/AST/JSONNodeDumper.h
M clang/include/clang/AST/NestedNameSpecifier.h
A clang/include/clang/AST/NestedNameSpecifierBase.h
M clang/include/clang/AST/ODRHash.h
M clang/include/clang/AST/PrettyPrinter.h
M clang/include/clang/AST/PropertiesBase.td
M clang/include/clang/AST/RecursiveASTVisitor.h
M clang/include/clang/AST/TemplateBase.h
M clang/include/clang/AST/TemplateName.h
M clang/include/clang/AST/TextNodeDumper.h
M clang/include/clang/AST/Type.h
M clang/include/clang/AST/TypeLoc.h
M clang/include/clang/AST/TypeProperties.td
M clang/include/clang/ASTMatchers/ASTMatchers.h
M clang/include/clang/ASTMatchers/ASTMatchersInternal.h
M clang/include/clang/Analysis/FlowSensitive/ASTOps.h
M clang/include/clang/Basic/DeclNodes.td
M clang/include/clang/Basic/TypeNodes.td
M clang/include/clang/ExtractAPI/DeclarationFragments.h
M clang/include/clang/Sema/CodeCompleteConsumer.h
M clang/include/clang/Sema/DeclSpec.h
M clang/include/clang/Sema/HeuristicResolver.h
M clang/include/clang/Sema/ParsedTemplate.h
M clang/include/clang/Sema/Sema.h
M clang/include/clang/Sema/SemaInternal.h
M clang/include/clang/Sema/TypoCorrection.h
M clang/include/clang/Serialization/ASTRecordReader.h
M clang/include/clang/Serialization/ASTRecordWriter.h
M clang/include/clang/Serialization/TypeBitCodes.def
M clang/include/clang/Tooling/Refactoring/Lookup.h
M clang/include/clang/Tooling/Refactoring/RecursiveSymbolVisitor.h
M clang/lib/AST/APValue.cpp
M clang/lib/AST/ASTConcept.cpp
M clang/lib/AST/ASTContext.cpp
M clang/lib/AST/ASTDiagnostic.cpp
M clang/lib/AST/ASTDumper.cpp
M clang/lib/AST/ASTImporter.cpp
M clang/lib/AST/ASTImporterLookupTable.cpp
M clang/lib/AST/ASTStructuralEquivalence.cpp
M clang/lib/AST/ASTTypeTraits.cpp
M clang/lib/AST/ByteCode/Compiler.cpp
M clang/lib/AST/ByteCode/Context.cpp
M clang/lib/AST/ByteCode/Descriptor.cpp
M clang/lib/AST/ByteCode/Interp.cpp
M clang/lib/AST/ByteCode/Interp.h
M clang/lib/AST/ByteCode/InterpBuiltin.cpp
M clang/lib/AST/ByteCode/InterpFrame.cpp
M clang/lib/AST/ByteCode/Pointer.cpp
M clang/lib/AST/ByteCode/Program.cpp
M clang/lib/AST/ByteCode/Record.cpp
M clang/lib/AST/CXXInheritance.cpp
M clang/lib/AST/Comment.cpp
M clang/lib/AST/CommentSema.cpp
M clang/lib/AST/ComparisonCategories.cpp
M clang/lib/AST/ComputeDependence.cpp
M clang/lib/AST/Decl.cpp
M clang/lib/AST/DeclBase.cpp
M clang/lib/AST/DeclCXX.cpp
M clang/lib/AST/DeclPrinter.cpp
M clang/lib/AST/DeclTemplate.cpp
M clang/lib/AST/DeclarationName.cpp
M clang/lib/AST/DynamicRecursiveASTVisitor.cpp
M clang/lib/AST/Expr.cpp
M clang/lib/AST/ExprCXX.cpp
M clang/lib/AST/ExprConcepts.cpp
M clang/lib/AST/ExprConstant.cpp
M clang/lib/AST/FormatString.cpp
M clang/lib/AST/InheritViz.cpp
M clang/lib/AST/ItaniumCXXABI.cpp
M clang/lib/AST/ItaniumMangle.cpp
M clang/lib/AST/JSONNodeDumper.cpp
M clang/lib/AST/MicrosoftMangle.cpp
M clang/lib/AST/NestedNameSpecifier.cpp
M clang/lib/AST/ODRHash.cpp
M clang/lib/AST/OpenMPClause.cpp
M clang/lib/AST/ParentMapContext.cpp
M clang/lib/AST/PrintfFormatString.cpp
M clang/lib/AST/QualTypeNames.cpp
M clang/lib/AST/RecordLayoutBuilder.cpp
M clang/lib/AST/ScanfFormatString.cpp
M clang/lib/AST/StmtPrinter.cpp
M clang/lib/AST/StmtProfile.cpp
M clang/lib/AST/TemplateBase.cpp
M clang/lib/AST/TemplateName.cpp
M clang/lib/AST/TextNodeDumper.cpp
M clang/lib/AST/Type.cpp
M clang/lib/AST/TypeLoc.cpp
M clang/lib/AST/TypePrinter.cpp
M clang/lib/AST/VTTBuilder.cpp
M clang/lib/AST/VTableBuilder.cpp
M clang/lib/ASTMatchers/ASTMatchFinder.cpp
M clang/lib/ASTMatchers/ASTMatchersInternal.cpp
M clang/lib/ASTMatchers/Dynamic/Registry.cpp
M clang/lib/Analysis/FlowSensitive/DataflowEnvironment.cpp
M clang/lib/Analysis/ThreadSafety.cpp
M clang/lib/Analysis/ThreadSafetyCommon.cpp
M clang/lib/Analysis/UnsafeBufferUsage.cpp
M clang/lib/CodeGen/ABIInfo.cpp
M clang/lib/CodeGen/ABIInfoImpl.cpp
M clang/lib/CodeGen/CGBlocks.cpp
M clang/lib/CodeGen/CGCUDANV.cpp
M clang/lib/CodeGen/CGCXX.cpp
M clang/lib/CodeGen/CGCXXABI.cpp
M clang/lib/CodeGen/CGCall.cpp
M clang/lib/CodeGen/CGClass.cpp
M clang/lib/CodeGen/CGDebugInfo.cpp
M clang/lib/CodeGen/CGDecl.cpp
M clang/lib/CodeGen/CGExpr.cpp
M clang/lib/CodeGen/CGExprAgg.cpp
M clang/lib/CodeGen/CGExprCXX.cpp
M clang/lib/CodeGen/CGExprConstant.cpp
M clang/lib/CodeGen/CGExprScalar.cpp
M clang/lib/CodeGen/CGHLSLRuntime.cpp
M clang/lib/CodeGen/CGNonTrivialStruct.cpp
M clang/lib/CodeGen/CGObjC.cpp
M clang/lib/CodeGen/CGObjCMac.cpp
M clang/lib/CodeGen/CGObjCRuntime.cpp
M clang/lib/CodeGen/CGOpenMPRuntime.cpp
M clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp
M clang/lib/CodeGen/CGPointerAuth.cpp
M clang/lib/CodeGen/CGStmt.cpp
M clang/lib/CodeGen/CGStmtOpenMP.cpp
M clang/lib/CodeGen/CGVTables.cpp
M clang/lib/CodeGen/CodeGenFunction.cpp
M clang/lib/CodeGen/CodeGenFunction.h
M clang/lib/CodeGen/CodeGenModule.cpp
M clang/lib/CodeGen/CodeGenTBAA.cpp
M clang/lib/CodeGen/CodeGenTypes.cpp
M clang/lib/CodeGen/HLSLBufferLayoutBuilder.cpp
M clang/lib/CodeGen/ItaniumCXXABI.cpp
M clang/lib/CodeGen/MicrosoftCXXABI.cpp
M clang/lib/CodeGen/SwiftCallingConv.cpp
M clang/lib/CodeGen/Targets/AArch64.cpp
M clang/lib/CodeGen/Targets/AMDGPU.cpp
M clang/lib/CodeGen/Targets/ARC.cpp
M clang/lib/CodeGen/Targets/ARM.cpp
M clang/lib/CodeGen/Targets/BPF.cpp
M clang/lib/CodeGen/Targets/CSKY.cpp
M clang/lib/CodeGen/Targets/Hexagon.cpp
M clang/lib/CodeGen/Targets/Lanai.cpp
M clang/lib/CodeGen/Targets/LoongArch.cpp
M clang/lib/CodeGen/Targets/Mips.cpp
M clang/lib/CodeGen/Targets/NVPTX.cpp
M clang/lib/CodeGen/Targets/PNaCl.cpp
M clang/lib/CodeGen/Targets/PPC.cpp
M clang/lib/CodeGen/Targets/RISCV.cpp
M clang/lib/CodeGen/Targets/SPIR.cpp
M clang/lib/CodeGen/Targets/Sparc.cpp
M clang/lib/CodeGen/Targets/SystemZ.cpp
M clang/lib/CodeGen/Targets/WebAssembly.cpp
M clang/lib/CodeGen/Targets/X86.cpp
M clang/lib/CodeGen/Targets/XCore.cpp
M clang/lib/ExtractAPI/DeclarationFragments.cpp
M clang/lib/ExtractAPI/TypedefUnderlyingTypeResolver.cpp
M clang/lib/Frontend/ASTConsumers.cpp
M clang/lib/Frontend/ASTUnit.cpp
M clang/lib/Index/IndexTypeSourceInfo.cpp
M clang/lib/Index/USRGeneration.cpp
M clang/lib/InstallAPI/Visitor.cpp
M clang/lib/Interpreter/InterpreterValuePrinter.cpp
M clang/lib/Interpreter/Value.cpp
M clang/lib/Parse/ParseDeclCXX.cpp
M clang/lib/Parse/ParseExprCXX.cpp
M clang/lib/Parse/ParseTemplate.cpp
M clang/lib/Parse/ParseTentative.cpp
M clang/lib/Parse/Parser.cpp
M clang/lib/Sema/AnalysisBasedWarnings.cpp
M clang/lib/Sema/DeclSpec.cpp
M clang/lib/Sema/HLSLBuiltinTypeDeclBuilder.cpp
M clang/lib/Sema/HLSLBuiltinTypeDeclBuilder.h
M clang/lib/Sema/HeuristicResolver.cpp
M clang/lib/Sema/Sema.cpp
M clang/lib/Sema/SemaAccess.cpp
M clang/lib/Sema/SemaAvailability.cpp
M clang/lib/Sema/SemaBPF.cpp
M clang/lib/Sema/SemaCUDA.cpp
M clang/lib/Sema/SemaCXXScopeSpec.cpp
M clang/lib/Sema/SemaCast.cpp
M clang/lib/Sema/SemaChecking.cpp
M clang/lib/Sema/SemaCodeComplete.cpp
M clang/lib/Sema/SemaCoroutine.cpp
M clang/lib/Sema/SemaDecl.cpp
M clang/lib/Sema/SemaDeclAttr.cpp
M clang/lib/Sema/SemaDeclCXX.cpp
M clang/lib/Sema/SemaDeclObjC.cpp
M clang/lib/Sema/SemaExceptionSpec.cpp
M clang/lib/Sema/SemaExpr.cpp
M clang/lib/Sema/SemaExprCXX.cpp
M clang/lib/Sema/SemaExprMember.cpp
M clang/lib/Sema/SemaExprObjC.cpp
M clang/lib/Sema/SemaFunctionEffects.cpp
M clang/lib/Sema/SemaHLSL.cpp
M clang/lib/Sema/SemaInit.cpp
M clang/lib/Sema/SemaLambda.cpp
M clang/lib/Sema/SemaLookup.cpp
M clang/lib/Sema/SemaObjC.cpp
M clang/lib/Sema/SemaObjCProperty.cpp
M clang/lib/Sema/SemaOpenMP.cpp
M clang/lib/Sema/SemaOverload.cpp
M clang/lib/Sema/SemaPPC.cpp
M clang/lib/Sema/SemaSYCL.cpp
M clang/lib/Sema/SemaStmt.cpp
M clang/lib/Sema/SemaStmtAsm.cpp
M clang/lib/Sema/SemaSwift.cpp
M clang/lib/Sema/SemaTemplate.cpp
M clang/lib/Sema/SemaTemplateDeduction.cpp
M clang/lib/Sema/SemaTemplateDeductionGuide.cpp
M clang/lib/Sema/SemaTemplateInstantiate.cpp
M clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
M clang/lib/Sema/SemaTemplateVariadic.cpp
M clang/lib/Sema/SemaType.cpp
M clang/lib/Sema/SemaTypeTraits.cpp
M clang/lib/Sema/TreeTransform.h
M clang/lib/Sema/UsedDeclVisitor.h
M clang/lib/Serialization/ASTReader.cpp
M clang/lib/Serialization/ASTReaderDecl.cpp
M clang/lib/Serialization/ASTWriter.cpp
M clang/lib/Serialization/ASTWriterDecl.cpp
M clang/lib/Serialization/TemplateArgumentHasher.cpp
M clang/lib/StaticAnalyzer/Checkers/CallAndMessageChecker.cpp
M clang/lib/StaticAnalyzer/Checkers/CastSizeChecker.cpp
M clang/lib/StaticAnalyzer/Checkers/DynamicTypePropagation.cpp
M clang/lib/StaticAnalyzer/Checkers/EnumCastOutOfRangeChecker.cpp
M clang/lib/StaticAnalyzer/Checkers/LLVMConventionsChecker.cpp
M clang/lib/StaticAnalyzer/Checkers/NonNullParamChecker.cpp
M clang/lib/StaticAnalyzer/Checkers/NonnullGlobalConstantsChecker.cpp
M clang/lib/StaticAnalyzer/Checkers/NumberObjectConversionChecker.cpp
M clang/lib/StaticAnalyzer/Checkers/PaddingChecker.cpp
M clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp
M clang/lib/StaticAnalyzer/Checkers/WebKit/PtrTypesSemantics.cpp
M clang/lib/StaticAnalyzer/Checkers/WebKit/RefCntblBaseVirtualDtorChecker.cpp
M clang/lib/StaticAnalyzer/Core/CallEvent.cpp
M clang/lib/StaticAnalyzer/Core/MemRegion.cpp
M clang/lib/StaticAnalyzer/Core/RegionStore.cpp
M clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
M clang/lib/Tooling/ASTDiff/ASTDiff.cpp
M clang/lib/Tooling/Refactoring/Lookup.cpp
M clang/lib/Tooling/Refactoring/Rename/USRLocFinder.cpp
M clang/lib/Tooling/Syntax/BuildTree.cpp
M clang/lib/Tooling/Transformer/RangeSelector.cpp
M clang/test/AST/HLSL/StructuredBuffers-AST.hlsl
M clang/test/AST/HLSL/TypedBuffers-AST.hlsl
M clang/test/AST/HLSL/cbuffer_and_namespaces.hlsl
M clang/test/AST/HLSL/vector-constructors.hlsl
M clang/test/AST/arm-mfp8.cpp
M clang/test/AST/ast-dump-color.cpp
M clang/test/AST/ast-dump-ctad-alias.cpp
M clang/test/AST/ast-dump-cxx2b-deducing-this.cpp
M clang/test/AST/ast-dump-decl-json.c
M clang/test/AST/ast-dump-decl.cpp
M clang/test/AST/ast-dump-expr-json.cpp
M clang/test/AST/ast-dump-expr.cpp
M clang/test/AST/ast-dump-for-range-lifetime.cpp
M clang/test/AST/ast-dump-openmp-begin-declare-variant_reference.cpp
M clang/test/AST/ast-dump-openmp-begin-declare-variant_template_3.cpp
M clang/test/AST/ast-dump-record-definition-data-json.cpp
M clang/test/AST/ast-dump-records-json.cpp
M clang/test/AST/ast-dump-records.c
M clang/test/AST/ast-dump-records.cpp
M clang/test/AST/ast-dump-recovery.cpp
M clang/test/AST/ast-dump-stmt-json.cpp
M clang/test/AST/ast-dump-stmt.m
M clang/test/AST/ast-dump-template-decls.cpp
M clang/test/AST/ast-dump-template-json-win32-mangler-crash.cpp
M clang/test/AST/ast-dump-template-name.cpp
M clang/test/AST/ast-dump-templates.cpp
M clang/test/AST/ast-dump-traits.cpp
M clang/test/AST/ast-dump-types-json.cpp
M clang/test/AST/ast-dump-using-template.cpp
M clang/test/AST/ast-dump-using.cpp
M clang/test/AST/attr-swift_attr.m
M clang/test/AST/coroutine-locals-cleanup.cpp
M clang/test/AST/cxx2c-variadic-friends.cpp
M clang/test/AST/deduction-guides.cpp
M clang/test/AST/float16.cpp
M clang/test/AST/sourceranges.cpp
M clang/test/ASTSYCL/ast-dump-sycl-kernel-call-stmt.cpp
M clang/test/Analysis/anonymous-decls.cpp
M clang/test/CXX/basic/basic.lookup/basic.lookup.qual/class.qual/p2.cpp
M clang/test/CXX/class.access/p6.cpp
M clang/test/CXX/class.derived/class.derived.general/p2.cpp
M clang/test/CXX/class/class.mem/class.mem.general/p8.cpp
M clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.type.elab/p3.cpp
M clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/p5-examples.cpp
M clang/test/CXX/dcl.decl/dcl.meaning/dcl.mptr/p2.cpp
M clang/test/CXX/dcl/dcl.fct/p17.cpp
M clang/test/CXX/drs/cwg0xx.cpp
M clang/test/CXX/drs/cwg12xx.cpp
M clang/test/CXX/drs/cwg13xx.cpp
M clang/test/CXX/drs/cwg2149.cpp
M clang/test/CXX/drs/cwg26xx.cpp
M clang/test/CXX/drs/cwg28xx.cpp
M clang/test/CXX/drs/cwg2xx.cpp
M clang/test/CXX/drs/cwg3xx.cpp
M clang/test/CXX/drs/cwg4xx.cpp
M clang/test/CXX/drs/cwg6xx.cpp
M clang/test/CXX/expr/expr.prim/expr.prim.req/compound-requirement.cpp
M clang/test/CXX/over/over.match/over.match.funcs/over.match.class.deduct/p2.cpp
M clang/test/CXX/temp/temp.arg/temp.arg.nontype/p5.cpp
M clang/test/CXX/temp/temp.constr/temp.constr.decl/func-template-decl.cpp
M clang/test/CXX/temp/temp.decls/temp.class.spec/p6.cpp
M clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.call/p3-0x.cpp
M clang/test/CXX/temp/temp.param/p15-cxx0x.cpp
M clang/test/CXX/temp/temp.res/temp.dep/temp.dep.type/p4.cpp
M clang/test/CodeGen/builtin-bpf-btf-type-id.c
M clang/test/CodeGen/builtins-bpf-preserve-field-info-3.c
M clang/test/Index/Core/index-instantiated-source.cpp
M clang/test/Index/Core/index-source.cpp
M clang/test/Index/c-index-api-loadTU-test.m
M clang/test/Index/copy-assignment-operator.cpp
M clang/test/Index/index-refs.cpp
M clang/test/Index/keep-going.cpp
M clang/test/Index/move-assignment-operator.cpp
M clang/test/Index/opencl-types.cl
M clang/test/Index/paren-type.c
M clang/test/Index/print-type-size.cpp
M clang/test/Index/print-type.c
M clang/test/Index/print-type.cpp
M clang/test/Index/recursive-cxx-member-calls.cpp
M clang/test/Index/redeclarations.cpp
M clang/test/Index/skip-parsed-bodies/compile_commands.json
M clang/test/Misc/diag-template-diffing-cxx11.cpp
M clang/test/Modules/modules-merge-enum.m
M clang/test/Modules/odr_hash.cpp
M clang/test/OpenMP/allocate_modifiers_messages.cpp
M clang/test/OpenMP/target_map_array_of_structs_with_nested_mapper_ast_dump.cpp
M clang/test/OpenMP/target_map_array_section_of_structs_with_nested_mapper_ast_dump.cpp
M clang/test/PCH/cxx-explicit-specifier.cpp
M clang/test/Parser/MicrosoftExtensions.cpp
M clang/test/Parser/cxx1z-class-template-argument-deduction.cpp
M clang/test/SemaCXX/MicrosoftExtensions.cpp
M clang/test/SemaCXX/builtin-get-vtable-pointer.cpp
M clang/test/SemaCXX/class-base-member-init.cpp
M clang/test/SemaCXX/co_await-ast.cpp
M clang/test/SemaCXX/compound-literal.cpp
M clang/test/SemaCXX/constant-expression.cpp
M clang/test/SemaCXX/constructor.cpp
M clang/test/SemaCXX/coroutine-allocs.cpp
M clang/test/SemaCXX/coroutine-traits-undefined-template.cpp
M clang/test/SemaCXX/coroutines.cpp
M clang/test/SemaCXX/ctad.cpp
M clang/test/SemaCXX/cxx1y-variable-templates_in_class.cpp
M clang/test/SemaCXX/cxx1z-class-template-argument-deduction.cpp
M clang/test/SemaCXX/cxx2a-destroying-delete.cpp
M clang/test/SemaCXX/cxx2b-deducing-this.cpp
M clang/test/SemaCXX/cxx2c-variadic-friends.cpp
M clang/test/SemaCXX/destructor.cpp
M clang/test/SemaCXX/elaborated-type-specifier.cpp
M clang/test/SemaCXX/enum-scoped.cpp
M clang/test/SemaCXX/err_init_conversion_failed.cpp
M clang/test/SemaCXX/gh102293.cpp
M clang/test/SemaCXX/incomplete-call.cpp
M clang/test/SemaCXX/matrix-casts.cpp
M clang/test/SemaCXX/nested-name-spec.cpp
M clang/test/SemaCXX/pointer-forward-declared-class-conversion.cpp
M clang/test/SemaCXX/pseudo-destructors.cpp
M clang/test/SemaCXX/return.cpp
M clang/test/SemaCXX/static-assert.cpp
M clang/test/SemaCXX/sugar-common-types.cpp
M clang/test/SemaCXX/sugared-auto.cpp
M clang/test/SemaCXX/type-aware-coroutines.cpp
M clang/test/SemaCXX/undefined-partial-specialization.cpp
M clang/test/SemaObjCXX/Inputs/nullability-pragmas-1.h
M clang/test/SemaObjCXX/arc-bridged-cast.mm
M clang/test/SemaObjCXX/objc-boxed-expressions-nsvalue.mm
M clang/test/SemaObjCXX/objcbridge-attribute-arc.mm
M clang/test/SemaObjCXX/objcbridge-attribute.mm
M clang/test/SemaObjCXX/objcbridge-related-attribute.mm
M clang/test/SemaObjCXX/objcbridge-static-cast.mm
M clang/test/SemaOpenACC/combined-construct-num_workers-ast.cpp
M clang/test/SemaOpenACC/compute-construct-intexpr-clause-ast.cpp
M clang/test/SemaOpenACC/compute-construct-varlist-ast.cpp
M clang/test/SemaTemplate/aggregate-deduction-candidate.cpp
M clang/test/SemaTemplate/ctad.cpp
M clang/test/SemaTemplate/current-instantiation.cpp
M clang/test/SemaTemplate/deduction-crash.cpp
M clang/test/SemaTemplate/deduction-guide.cpp
M clang/test/SemaTemplate/dependent-base-classes.cpp
M clang/test/SemaTemplate/dependent-names.cpp
M clang/test/SemaTemplate/elaborated-type-specifier.cpp
M clang/test/SemaTemplate/instantiate-requires-expr.cpp
M clang/test/SemaTemplate/make_integer_seq.cpp
M clang/test/SemaTemplate/ms-lookup-template-base-classes.cpp
M clang/test/SemaTemplate/ms-sizeof-missing-typename.cpp
M clang/test/SemaTemplate/nested-implicit-deduction-guides.cpp
M clang/test/SemaTemplate/nested-name-spec-template.cpp
M clang/test/SemaTemplate/nested-template.cpp
M clang/test/SemaTemplate/overload-candidates.cpp
M clang/test/SemaTemplate/temp_arg_nontype.cpp
M clang/test/SemaTemplate/template-id-expr.cpp
M clang/test/SemaTemplate/type_pack_element.cpp
M clang/test/SemaTemplate/typename-specifier-4.cpp
M clang/test/SemaTemplate/typename-specifier.cpp
M clang/tools/libclang/CIndex.cpp
M clang/tools/libclang/CIndexCodeCompletion.cpp
M clang/tools/libclang/CXCursor.cpp
M clang/tools/libclang/CXIndexDataConsumer.cpp
M clang/tools/libclang/CXType.cpp
M clang/tools/libclang/CursorVisitor.h
M clang/unittests/AST/ASTContextParentMapTest.cpp
M clang/unittests/AST/ASTExprTest.cpp
M clang/unittests/AST/ASTImporterFixtures.h
M clang/unittests/AST/ASTImporterTest.cpp
M clang/unittests/AST/DeclPrinterTest.cpp
M clang/unittests/AST/ProfilingTest.cpp
M clang/unittests/AST/RandstructTest.cpp
M clang/unittests/AST/RecursiveASTVisitorTest.cpp
M clang/unittests/AST/SizelessTypesTest.cpp
M clang/unittests/AST/StructuralEquivalenceTest.cpp
M clang/unittests/AST/TemplateNameTest.cpp
M clang/unittests/AST/TypePrinterTest.cpp
M clang/unittests/ASTMatchers/ASTMatchersNarrowingTest.cpp
M clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp
M clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp
M clang/unittests/Analysis/FlowSensitive/CachedConstAccessorsLatticeTest.cpp
M clang/unittests/Analysis/FlowSensitive/DataflowEnvironmentTest.cpp
M clang/unittests/CodeGen/CodeGenExternalTest.cpp
M clang/unittests/Index/IndexTests.cpp
M clang/unittests/Sema/HeuristicResolverTest.cpp
M clang/unittests/StaticAnalyzer/SValTest.cpp
M clang/unittests/Tooling/LookupTest.cpp
M clang/unittests/Tooling/QualTypeNamesTest.cpp
M clang/unittests/Tooling/RangeSelectorTest.cpp
M clang/unittests/Tooling/RecursiveASTVisitorTestTypeLocVisitor.cpp
M clang/unittests/Tooling/RecursiveASTVisitorTests/MemberPointerTypeLoc.cpp
M clang/unittests/Tooling/RecursiveASTVisitorTests/NestedNameSpecifiers.cpp
M clang/unittests/Tooling/RefactoringTest.cpp
Log Message:
-----------
[clang] Improve nested name specifier AST representation
This is a major change on how we represent nested name qualifications in the AST.
* The nested name specifier itself and how it's stored is changed. The prefixes
for types are handled within the type hierarchy, which makes canonicalization
for them super cheap, no memory allocation required. Also translating a type
into nested name specifier form becomes a no-op. An identifier is stored as a
DependentNameType. The nested name specifier gains a lightweight handle class,
to be used instead of passing around pointers, which is similar to what is implemented
for TemplateName. There is still one free bit available, and this handle can
be used within a PointerUnion and PointerIntPair, which should keep bit-packing
aficionados happy.
* The ElaboratedType node is removed, all type nodes in which it could previously apply
to can now store the elaborated keyword and name qualifier, tail allocating
when present.
* TagTypes can now point to the exact declaration found when producing these, as
opposed to the previous situation of there only existing one TagType per entity.
This increases the amount of type sugar retained, and can have several
applications, for example in tracking module ownership, and other tools
which care about source file origins, such as IWYU. These TagTypes are lazily
allocated, in order to limit the increase in AST size.
This patch offers a great performance benefit.
It greatly improves compilation time for [stdexec](https://github.com/NVIDIA/stdexec).
For one datapoint, for `test_on2.cpp` in that project, which is the slowest
compiling test, this patch improves `-c` compilation time by about 7.2%, with
the `-fsyntax-only` improvement being at ~12%.
This has great results on compile-time-tracker as well:
This patch also further enables other optimziations in the future, and
will reduce the performance impact of template specialization resugaring
when that lands.
It has some other miscelaneous drive-by fixes.
About the review: Yes the patch is huge, sorry about that.
Part of the reason is that I started by the nested name specifier
part, before the ElaboratedType part, but that had a huge performance
downside, as ElaboratedType is a big performance hog. I didn't have
the steam to go back and change the patch after the fact.
There is also a lot of internal API changes, and it made sense to
remove ElaboratedType in one go, versus removing it from one type
at a time, as that would present much more churn to the users.
Also, the nested name specifier having a different API avoids
missing changes related to how prefixes work now, which could
make existing code compile but not work.
How to review: The important changes are all in `clang/include/clang/AST` and
`clang/lib/AST`, with also import changes in `clang/lib/Sema/TreeTransform.h`.
The rest and bulk of the changes are mostly consequences of the changes in API.
Fixes #136624
Fixes #147000
To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications
More information about the All-commits
mailing list