]> granicus.if.org Git - llvm/commitdiff
[TableGen] Fix a memory leak when creating SwitchOpcodeMatchers.
authorCraig Topper <craig.topper@gmail.com>
Fri, 6 May 2016 06:56:14 +0000 (06:56 +0000)
committerCraig Topper <craig.topper@gmail.com>
Fri, 6 May 2016 06:56:14 +0000 (06:56 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268712 91177308-0d34-0410-b5e6-96231b3b80d8

utils/TableGen/DAGISelMatcherOpt.cpp

index e17e27a2be4a07f963b8e3cdd81e62de6c556ef3..ad385fac043895fde25691db24276c2a20aea33f 100644 (file)
@@ -383,7 +383,8 @@ static void FactorNodes(std::unique_ptr<Matcher> &MatcherPtr) {
       CheckOpcodeMatcher *COM = cast<CheckOpcodeMatcher>(NewOptionsToMatch[i]);
       assert(Opcodes.insert(COM->getOpcode().getEnumName()).second &&
              "Duplicate opcodes not factored?");
-      Cases.push_back(std::make_pair(&COM->getOpcode(), COM->getNext()));
+      Cases.push_back(std::make_pair(&COM->getOpcode(), COM->takeNext()));
+      delete COM;
     }
     
     MatcherPtr.reset(new SwitchOpcodeMatcher(Cases));