[llvm] r332176 - Clear converters map after X86 Domain Reassignment to avoid crashes

Dimitry Andric via llvm-commits llvm-commits at lists.llvm.org
Sat May 12 12:59:54 PDT 2018


Author: dim
Date: Sat May 12 12:59:54 2018
New Revision: 332176

URL: http://llvm.org/viewvc/llvm-project?rev=332176&view=rev
Log:
Clear converters map after X86 Domain Reassignment to avoid crashes

Summary:
As reported in PR37264, in some cases the X86 Domain Reassignment
`runOnMachineFunction()` is called twice.  Because it only deletes the
`.second` members of its `InstrConverterBaseMap`, and does not clean up
the map itself, this can lead to double frees and crashes.

Use `DeleteContainerSeconds()` instead, so the `Converters` map can
safely be reinitialized and its members re-deleted for each X86 Domain
Reassignment pass.

Reviewers: guyblank, craig.topper

Reviewed By: craig.topper

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D46425

Modified:
    llvm/trunk/lib/Target/X86/X86DomainReassignment.cpp

Modified: llvm/trunk/lib/Target/X86/X86DomainReassignment.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86DomainReassignment.cpp?rev=332176&r1=332175&r2=332176&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86DomainReassignment.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86DomainReassignment.cpp Sat May 12 12:59:54 2018
@@ -750,8 +750,7 @@ bool X86DomainReassignment::runOnMachine
       Changed = true;
     }
 
-  for (auto I : Converters)
-    delete I.second;
+  DeleteContainerSeconds(Converters);
 
   DEBUG(dbgs() << "***** Machine Function after Domain Reassignment *****\n");
   DEBUG(MF.print(dbgs()));




More information about the llvm-commits mailing list