diff --git a/libcxxabi/src/demangle/ItaniumDemangle.h b/libcxxabi/src/demangle/ItaniumDemangle.h index 36bf454636366..2637d2d456673 100644 --- a/libcxxabi/src/demangle/ItaniumDemangle.h +++ b/libcxxabi/src/demangle/ItaniumDemangle.h @@ -200,8 +200,7 @@ class Node { Prec Precedence : 6; - // FIXME: Make these protected. -public: +protected: /// Tracks if this node has a component on its right side, in which case we /// need to call printRight. Cache RHSComponentCache : 2; @@ -255,6 +254,9 @@ class Node { Kind getKind() const { return K; } Prec getPrecedence() const { return Precedence; } + Cache getRHSComponentCache() const { return RHSComponentCache; } + Cache getArrayCache() const { return ArrayCache; } + Cache getFunctionCache() const { return FunctionCache; } virtual bool hasRHSComponentSlow(OutputBuffer &) const { return false; } virtual bool hasArraySlow(OutputBuffer &) const { return false; } @@ -424,8 +426,8 @@ class QualType final : public Node { public: QualType(const Node *Child_, Qualifiers Quals_) - : Node(KQualType, Child_->RHSComponentCache, - Child_->ArrayCache, Child_->FunctionCache), + : Node(KQualType, Child_->getRHSComponentCache(), Child_->getArrayCache(), + Child_->getFunctionCache()), Quals(Quals_), Child(Child_) {} Qualifiers getQuals() const { return Quals; } @@ -554,8 +556,8 @@ struct AbiTagAttr : Node { std::string_view Tag; AbiTagAttr(Node *Base_, std::string_view Tag_) - : Node(KAbiTagAttr, Base_->RHSComponentCache, Base_->ArrayCache, - Base_->FunctionCache), + : Node(KAbiTagAttr, Base_->getRHSComponentCache(), Base_->getArrayCache(), + Base_->getFunctionCache()), Base(Base_), Tag(Tag_) {} template void match(Fn F) const { F(Base, Tag); } @@ -615,7 +617,7 @@ class PointerType final : public Node { public: PointerType(const Node *Pointee_) - : Node(KPointerType, Pointee_->RHSComponentCache), + : Node(KPointerType, Pointee_->getRHSComponentCache()), Pointee(Pointee_) {} const Node *getPointee() const { return Pointee; } @@ -699,7 +701,7 @@ class ReferenceType : public Node { public: ReferenceType(const Node *Pointee_, ReferenceKind RK_) - : Node(KReferenceType, Pointee_->RHSComponentCache), + : Node(KReferenceType, Pointee_->getRHSComponentCache()), Pointee(Pointee_), RK(RK_) {} template void match(Fn F) const { F(Pointee, RK); } @@ -742,7 +744,7 @@ class PointerToMemberType final : public Node { public: PointerToMemberType(const Node *ClassType_, const Node *MemberType_) - : Node(KPointerToMemberType, MemberType_->RHSComponentCache), + : Node(KPointerToMemberType, MemberType_->getRHSComponentCache()), ClassType(ClassType_), MemberType(MemberType_) {} template void match(Fn F) const { F(ClassType, MemberType); } @@ -1383,16 +1385,14 @@ class ParameterPack final : public Node { public: ParameterPack(NodeArray Data_) : Node(KParameterPack), Data(Data_) { ArrayCache = FunctionCache = RHSComponentCache = Cache::Unknown; - if (std::all_of(Data.begin(), Data.end(), [](Node* P) { - return P->ArrayCache == Cache::No; - })) + if (std::all_of(Data.begin(), Data.end(), + [](Node *P) { return P->getArrayCache() == Cache::No; })) ArrayCache = Cache::No; - if (std::all_of(Data.begin(), Data.end(), [](Node* P) { - return P->FunctionCache == Cache::No; - })) + if (std::all_of(Data.begin(), Data.end(), + [](Node *P) { return P->getFunctionCache() == Cache::No; })) FunctionCache = Cache::No; - if (std::all_of(Data.begin(), Data.end(), [](Node* P) { - return P->RHSComponentCache == Cache::No; + if (std::all_of(Data.begin(), Data.end(), [](Node *P) { + return P->getRHSComponentCache() == Cache::No; })) RHSComponentCache = Cache::No; }