[SelectionDAG] Use consistent type sizes for opcode

This commit is contained in:
Mirko Brkusanin 2022-10-12 17:20:46 +02:00
parent 7b9482df3d
commit 8b8463ef6c
2 changed files with 11 additions and 10 deletions

View File

@ -462,12 +462,19 @@ public:
class SDNode : public FoldingSetNode, public ilist_node<SDNode> { class SDNode : public FoldingSetNode, public ilist_node<SDNode> {
private: private:
/// The operation that this node performs. /// 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: protected:
// We define a set of mini-helper classes to help us interpret the bits in our // 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 // SubclassData. These are designed to fit within a uint16_t so they pack
// with NodeType. // with PersistentId.
#if defined(_AIX) && (!defined(__GNUC__) || defined(__clang__)) #if defined(_AIX) && (!defined(__GNUC__) || defined(__clang__))
// Except for GCC; by default, AIX compilers store bit-fields in 4-byte words // Except for GCC; by default, AIX compilers store bit-fields in 4-byte words
@ -625,12 +632,6 @@ private:
uint32_t CFIType = 0; uint32_t CFIType = 0;
public: 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 // Accessors
// //
@ -639,7 +640,7 @@ public:
/// pre-isel nodes (those for which isMachineOpcode returns false), these /// pre-isel nodes (those for which isMachineOpcode returns false), these
/// are the opcode values in the ISD and <target>ISD namespaces. For /// are the opcode values in the ISD and <target>ISD namespaces. For
/// post-isel opcodes, see getMachineOpcode. /// 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 /// Test if this node has a target-specific opcode (in the
/// \<target\>ISD namespace). /// \<target\>ISD namespace).

View File

@ -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<SDValue> OpList) { SDVTList VTList, ArrayRef<SDValue> OpList) {
AddNodeIDOpcode(ID, OpC); AddNodeIDOpcode(ID, OpC);
AddNodeIDValueTypes(ID, VTList); AddNodeIDValueTypes(ID, VTList);