[llvm] f0f1bca - [demangler] Add getters for Qual/Vector/Pointer types

Alexey Bader via llvm-commits llvm-commits at lists.llvm.org
Sun Aug 7 02:12:53 PDT 2022


Author: Alexey Bader
Date: 2022-08-07T02:10:05-07:00
New Revision: f0f1bcadc74fa5cd11a118673340ca3e9a8c0037

URL: https://github.com/llvm/llvm-project/commit/f0f1bcadc74fa5cd11a118673340ca3e9a8c0037
DIFF: https://github.com/llvm/llvm-project/commit/f0f1bcadc74fa5cd11a118673340ca3e9a8c0037.diff

LOG: [demangler] Add getters for Qual/Vector/Pointer types

These are useful for downstream tool aligning the mangling of data types which differ between different languages/targets.

Patch by Steffen Larsen <steffen.larsen at intel.com>

Differential Revision: https://reviews.llvm.org/D130909

Added: 
    

Modified: 
    llvm/include/llvm/Demangle/ItaniumDemangle.h

Removed: 
    


################################################################################
diff  --git a/llvm/include/llvm/Demangle/ItaniumDemangle.h b/llvm/include/llvm/Demangle/ItaniumDemangle.h
index 6d4f6222af447..796e979f445ce 100644
--- a/llvm/include/llvm/Demangle/ItaniumDemangle.h
+++ b/llvm/include/llvm/Demangle/ItaniumDemangle.h
@@ -369,6 +369,10 @@ class VendorExtQualType final : public Node {
   VendorExtQualType(const Node *Ty_, StringView Ext_, const Node *TA_)
       : Node(KVendorExtQualType), Ty(Ty_), Ext(Ext_), TA(TA_) {}
 
+  const Node *getTy() const { return Ty; }
+  StringView getExt() const { return Ext; }
+  const Node *getTA() const { return TA; }
+
   template <typename Fn> void match(Fn F) const { F(Ty, Ext, TA); }
 
   void printLeft(OutputBuffer &OB) const override {
@@ -417,6 +421,9 @@ class QualType final : public Node {
              Child_->ArrayCache, Child_->FunctionCache),
         Quals(Quals_), Child(Child_) {}
 
+  Qualifiers getQuals() const { return Quals; }
+  const Node *getChild() const { return Child; }
+
   template<typename Fn> void match(Fn F) const { F(Child, Quals); }
 
   bool hasRHSComponentSlow(OutputBuffer &OB) const override {
@@ -585,6 +592,8 @@ class PointerType final : public Node {
       : Node(KPointerType, Pointee_->RHSComponentCache),
         Pointee(Pointee_) {}
 
+  const Node *getPointee() const { return Pointee; }
+
   template<typename Fn> void match(Fn F) const { F(Pointee); }
 
   bool hasRHSComponentSlow(OutputBuffer &OB) const override {
@@ -1070,6 +1079,9 @@ class VectorType final : public Node {
   VectorType(const Node *BaseType_, const Node *Dimension_)
       : Node(KVectorType), BaseType(BaseType_), Dimension(Dimension_) {}
 
+  const Node *getBaseType() const { return BaseType; }
+  const Node *getDimension() const { return Dimension; }
+
   template<typename Fn> void match(Fn F) const { F(BaseType, Dimension); }
 
   void printLeft(OutputBuffer &OB) const override {


        


More information about the llvm-commits mailing list