From 8b8463ef6c6d487e771b577ccd08e6c684d97690 Mon Sep 17 00:00:00 2001 From: Mirko Brkusanin Date: Wed, 12 Oct 2022 17:20:46 +0200 Subject: [PATCH] [SelectionDAG] Use consistent type sizes for opcode --- llvm/include/llvm/CodeGen/SelectionDAGNodes.h | 19 ++++++++++--------- llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp | 2 +- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/llvm/include/llvm/CodeGen/SelectionDAGNodes.h b/llvm/include/llvm/CodeGen/SelectionDAGNodes.h index 179578e..20767bb 100644 --- a/llvm/include/llvm/CodeGen/SelectionDAGNodes.h +++ b/llvm/include/llvm/CodeGen/SelectionDAGNodes.h @@ -462,12 +462,19 @@ public: class SDNode : public FoldingSetNode, public ilist_node { private: /// The operation that this node performs. - int16_t NodeType; + int32_t NodeType; + +public: + /// Unique and persistent id per SDNode in the DAG. Used for debug printing. + /// We do not place that under `#if LLVM_ENABLE_ABI_BREAKING_CHECKS` + /// intentionally because it adds unneeded complexity without noticeable + /// benefits (see discussion with @thakis in D120714). + uint16_t PersistentId; protected: // We define a set of mini-helper classes to help us interpret the bits in our // SubclassData. These are designed to fit within a uint16_t so they pack - // with NodeType. + // with PersistentId. #if defined(_AIX) && (!defined(__GNUC__) || defined(__clang__)) // Except for GCC; by default, AIX compilers store bit-fields in 4-byte words @@ -625,12 +632,6 @@ private: uint32_t CFIType = 0; public: - /// Unique and persistent id per SDNode in the DAG. Used for debug printing. - /// We do not place that under `#if LLVM_ENABLE_ABI_BREAKING_CHECKS` - /// intentionally because it adds unneeded complexity without noticeable - /// benefits (see discussion with @thakis in D120714). - uint16_t PersistentId; - //===--------------------------------------------------------------------===// // Accessors // @@ -639,7 +640,7 @@ public: /// pre-isel nodes (those for which isMachineOpcode returns false), these /// are the opcode values in the ISD and ISD namespaces. For /// post-isel opcodes, see getMachineOpcode. - unsigned getOpcode() const { return (unsigned short)NodeType; } + unsigned getOpcode() const { return (unsigned)NodeType; } /// Test if this node has a target-specific opcode (in the /// \ISD namespace). diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp index cd98f04..93a74b7 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp @@ -660,7 +660,7 @@ static void AddNodeIDOperands(FoldingSetNodeID &ID, } } -static void AddNodeIDNode(FoldingSetNodeID &ID, unsigned short OpC, +static void AddNodeIDNode(FoldingSetNodeID &ID, unsigned OpC, SDVTList VTList, ArrayRef OpList) { AddNodeIDOpcode(ID, OpC); AddNodeIDValueTypes(ID, VTList); -- 2.7.4