]> granicus.if.org Git - llvm/commitdiff
Zero-Initialize PrevInstBB when entering a new MachineFunction.
authorAdrian Prantl <aprantl@apple.com>
Thu, 23 Mar 2017 20:23:42 +0000 (20:23 +0000)
committerAdrian Prantl <aprantl@apple.com>
Thu, 23 Mar 2017 20:23:42 +0000 (20:23 +0000)
It is not guaranteed that the memory used for MachineBasicBlocks in
the previous MachineFunction hasn't been freed, so holding on to a
pointer to the last function's isn't correct. Particularly I have
observed the sret.ll testcase failing because the first BasicBlock in
the new function happened to be allocated to the exact same memory as
the previously saved and (deleted) PrevInstBB.

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

lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp

index aa8b8fbb86981211e5c3bb9bf8d2a8805e7df8a4..1d63e33a4d33af585e98617aa1df3676916a1e40 100644 (file)
@@ -130,6 +130,7 @@ bool hasDebugInfo(const MachineModuleInfo *MMI, const MachineFunction *MF) {
 
 void DebugHandlerBase::beginFunction(const MachineFunction *MF) {
   assert(Asm);
+  PrevInstBB = nullptr;
 
   if (!hasDebugInfo(MMI, MF)) {
     skippedNonDebugFunction();