Clean out per-function data after the machine code verifier is done with it.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Sat, 8 Aug 2009 15:34:50 +0000 (15:34 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Sat, 8 Aug 2009 15:34:50 +0000 (15:34 +0000)
Also don't dereference old pointers after they have been deleted causing
random crashes when enabling the machine code verifier.

Ahem...

I have not included a test case for the crash. It hapened when enabling the
verifier on CodeGen/X86/2009-08-06-branchfolder-crash.ll.

The crash depends on an MBB being allocated at the same address as a
previously deleted MBB. I don't think that can be reproduced reliably.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78472 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/MachineVerifier.cpp

index e6ed18057cf5a8b120cf7c67195d2b1589fe3ae6..0b9127fd4a521fc719c45ea28b7f063c143a7a2e 100644 (file)
@@ -220,6 +220,14 @@ MachineVerifier::runOnMachineFunction(MachineFunction &MF)
     llvm_report_error(Msg.str());
   }
 
+  // Clean up.
+  regsLive.clear();
+  regsDefined.clear();
+  regsDead.clear();
+  regsKilled.clear();
+  regsLiveInButUnused.clear();
+  MBBInfoMap.clear();
+
   return false;                 // no changes
 }