diff options
author | Artem Dergachev <artem.dergachev@gmail.com> | 2018-12-03 22:15:34 +0000 |
---|---|---|
committer | Artem Dergachev <artem.dergachev@gmail.com> | 2018-12-03 22:15:34 +0000 |
commit | d3942beb463a87ffa30d565af338b3972462600c (patch) | |
tree | fb7f281148de0d233db1bc528f4c9bec4e2a7f27 /clang/lib/AST/DeclCXX.cpp | |
parent | 18de5e46571e091b4772cbebf7dd3ad95145480a (diff) | |
download | bcm5719-llvm-d3942beb463a87ffa30d565af338b3972462600c.tar.gz bcm5719-llvm-d3942beb463a87ffa30d565af338b3972462600c.zip |
[AST] Generate unique identifiers for CXXCtorInitializer objects.
This continues the work started in r342309 and r342315 to provide identifiers
to AST objects that are shorter and easier to read and remember than pointers.
Differential Revision: https://reviews.llvm.org/D54457
llvm-svn: 348198
Diffstat (limited to 'clang/lib/AST/DeclCXX.cpp')
-rw-r--r-- | clang/lib/AST/DeclCXX.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/clang/lib/AST/DeclCXX.cpp b/clang/lib/AST/DeclCXX.cpp index 9bb6e3a013a..81ee48c1829 100644 --- a/clang/lib/AST/DeclCXX.cpp +++ b/clang/lib/AST/DeclCXX.cpp @@ -2246,6 +2246,14 @@ CXXCtorInitializer::CXXCtorInitializer(ASTContext &Context, : Initializee(TInfo), Init(Init), LParenLoc(L), RParenLoc(R), IsDelegating(true), IsVirtual(false), IsWritten(false), SourceOrder(0) {} +int64_t CXXCtorInitializer::getID(const ASTContext &Context) const { + Optional<int64_t> Out = Context.getAllocator().identifyObject(this); + assert(Out && "Wrong allocator used"); + assert(*Out % alignof(CXXCtorInitializer) == 0 && + "Wrong alignment information"); + return *Out / alignof(CXXCtorInitializer); +} + TypeLoc CXXCtorInitializer::getBaseClassLoc() const { if (isBaseInitializer()) return Initializee.get<TypeSourceInfo*>()->getTypeLoc(); |