Scheduler assumes SDDbgValue nodes are in source order. That's true currently. But...
authorEvan Cheng <evan.cheng@apple.com>
Thu, 25 Mar 2010 07:16:57 +0000 (07:16 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Thu, 25 Mar 2010 07:16:57 +0000 (07:16 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99501 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp

index 07dcc0e4f13c3e257eff52ca06f001550d202914..e7ab2f0039633802bbd26dfb7bfff700804117eb 100644 (file)
@@ -528,8 +528,16 @@ EmitSchedule(DenseMap<MachineBasicBlock*, MachineBasicBlock*> *EM) {
       if (!MI)
         continue;
       MachineBasicBlock *MIBB = MI->getParent();
+#ifndef NDEBUG
+      unsigned LastDIOrder = 0;
+#endif
       for (; DI != DE &&
              (*DI)->getOrder() >= LastOrder && (*DI)->getOrder() < Order; ++DI) {
+#ifndef NDEBUG
+        assert((*DI)->getOrder() >= LastDIOrder &&
+               "SDDbgValue nodes must be in source order!");
+        LastDIOrder = (*DI)->getOrder();
+#endif
         if ((*DI)->isInvalidated())
           continue;
         MachineInstr *DbgMI = Emitter.EmitDbgValue(*DI, MIBB, VRBaseMap, EM);