diff options
author | Krystian Stasiowski <sdkrystian@gmail.com> | 2024-07-15 13:57:56 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-15 13:57:56 -0400 |
commit | e6ec7c8f74d1be778f4ddf794d0e2fb63b0dc3be (patch) | |
tree | d4e341f33bd7961952e31173a1fb769fdf16d12d /clang/lib/AST/DeclBase.cpp | |
parent | 290537238b45106e30bb082b9affde345d8a5482 (diff) | |
download | llvm-e6ec7c8f74d1be778f4ddf794d0e2fb63b0dc3be.zip llvm-e6ec7c8f74d1be778f4ddf794d0e2fb63b0dc3be.tar.gz llvm-e6ec7c8f74d1be778f4ddf794d0e2fb63b0dc3be.tar.bz2 |
[Clang][AST] Move NamespaceDecl bits to DeclContext (#98567)
Currently, `NamespaceDecl` has a member `AnonOrFirstNamespaceAndFlags`
which stores a few pieces of data:
- a bit indicating whether the namespace was declared `inline`, and
- a bit indicating whether the namespace was declared as a
_nested-namespace-definition_, and
- a pointer a `NamespaceDecl` that either stores:
- a pointer to the first declaration of that namespace if the
declaration is no the first declaration, or
- a pointer to the unnamed namespace that inhabits the namespace
otherwise.
`Redeclarable` already stores a pointer to the first declaration of an
entity, so it's unnecessary to store this in `NamespaceDecl`.
`DeclContext` has 8 bytes in which various bitfields can be stored for a
declaration, so it's not necessary to store these in `NamespaceDecl`
either. We only need to store a pointer to the unnamed namespace that
inhabits the first declaration of a namespace. This patch moves the two
bits currently stored in `NamespaceDecl` to `DeclContext`, and only
stores a pointer to the unnamed namespace that inhabits a namespace in
the first declaration of that namespace. Since `getOriginalNamespace`
always returns the same `NamespaceDecl` as `getFirstDecl`, this function
is removed to avoid confusion.
Diffstat (limited to 'clang/lib/AST/DeclBase.cpp')
-rw-r--r-- | clang/lib/AST/DeclBase.cpp | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/clang/lib/AST/DeclBase.cpp b/clang/lib/AST/DeclBase.cpp index ef2c57e..bc5a920 100644 --- a/clang/lib/AST/DeclBase.cpp +++ b/clang/lib/AST/DeclBase.cpp @@ -1422,8 +1422,7 @@ DeclContext *DeclContext::getPrimaryContext() { case Decl::TranslationUnit: return static_cast<TranslationUnitDecl *>(this)->getFirstDecl(); case Decl::Namespace: - // The original namespace is our primary context. - return static_cast<NamespaceDecl *>(this)->getOriginalNamespace(); + return static_cast<NamespaceDecl *>(this)->getFirstDecl(); case Decl::ObjCMethod: return this; |