]> granicus.if.org Git - llvm/commitdiff
[DAG] Fix Lifetime Node ID hashing.
authorNirav Dave <niravd@google.com>
Thu, 28 Mar 2019 15:53:01 +0000 (15:53 +0000)
committerNirav Dave <niravd@google.com>
Thu, 28 Mar 2019 15:53:01 +0000 (15:53 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357179 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/CodeGen/SelectionDAGNodes.h
lib/CodeGen/SelectionDAG/SelectionDAG.cpp

index dada28eb566e5dc3b973264a00627cd6a2146f44..e562ffcefd7bf0334c5d5c31154fb16842bdd37f 100644 (file)
@@ -1708,13 +1708,14 @@ public:
 /// This SDNode is used for LIFETIME_START/LIFETIME_END values, which indicate
 /// the offet and size that are started/ended in the underlying FrameIndex.
 class LifetimeSDNode : public SDNode {
+  friend class SelectionDAG;
   int64_t Size;
   int64_t Offset; // -1 if offset is unknown.
-public:
+
   LifetimeSDNode(unsigned Opcode, unsigned Order, const DebugLoc &dl,
                  SDVTList VTs, int64_t Size, int64_t Offset)
       : SDNode(Opcode, Order, dl, VTs), Size(Size), Offset(Offset) {}
-
+public:
   int64_t getFrameIndex() const {
     return cast<FrameIndexSDNode>(getOperand(1))->getIndex();
   }
index 6648d1b089e9839d7bb75676289bb042250e4545..3cd08271f264dcb38c49c6c161b383fd17430170 100644 (file)
@@ -517,6 +517,13 @@ static void AddNodeIDCustom(FoldingSetNodeID &ID, const SDNode *N) {
   case ISD::TargetFrameIndex:
     ID.AddInteger(cast<FrameIndexSDNode>(N)->getIndex());
     break;
+  case ISD::LIFETIME_START:
+  case ISD::LIFETIME_END:
+    if (cast<LifetimeSDNode>(N)->hasOffset()) {
+      ID.AddInteger(cast<LifetimeSDNode>(N)->getSize());
+      ID.AddInteger(cast<LifetimeSDNode>(N)->getOffset());
+    }
+    break;
   case ISD::JumpTable:
   case ISD::TargetJumpTable:
     ID.AddInteger(cast<JumpTableSDNode>(N)->getIndex());