Follow up to 6e03a68b776dc, squelch another leak
authorJeremy Morse <jeremy.morse@sony.com>
Wed, 2 Feb 2022 21:00:20 +0000 (21:00 +0000)
committerJeremy Morse <jeremy.morse@sony.com>
Wed, 2 Feb 2022 21:02:11 +0000 (21:02 +0000)
This patch is a sticking-paster until D118774 solves the situation with
unique_ptrs. I'm certainly wishing I'd focused on that first X_X.

llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.cpp

index 3b4d717..6af5f07 100644 (file)
@@ -2929,8 +2929,15 @@ bool InstrRefBasedLDV::depthFirstVLocAndEmit(
   VTracker = nullptr;
 
   // No scopes? No variable locations.
-  if (!LS.getCurrentFunctionScope())
+  if (!LS.getCurrentFunctionScope()) {
+    // FIXME: this is a sticking plaster to prevent a memory leak, these
+    // pointers will be automagically freed by being unique pointers, shortly.
+    for (unsigned int I = 0; I < MaxNumBlocks; ++I) {
+      delete[] MInLocs[I];
+      delete[] MOutLocs[I];
+    }
     return false;
+  }
 
   // Build map from block number to the last scope that uses the block.
   SmallVector<unsigned, 16> EjectionMap;