[PATCH] D46425: Clear converters map after X86 Domain Reassignment to avoid crashes

Dimitry Andric via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri May 4 05:26:27 PDT 2018


dim created this revision.
dim added reviewers: guyblank, craig.topper.

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.

Cleanup the Converters map after use, so it can safely be reinitialized
and its members re-deleted for each X86 Domain Reassignment pass.


Repository:
  rL LLVM

https://reviews.llvm.org/D46425

Files:
  lib/Target/X86/X86DomainReassignment.cpp


Index: lib/Target/X86/X86DomainReassignment.cpp
===================================================================
--- lib/Target/X86/X86DomainReassignment.cpp
+++ lib/Target/X86/X86DomainReassignment.cpp
@@ -752,6 +752,7 @@
 
   for (auto I : Converters)
     delete I.second;
+  Converters.clear();
 
   DEBUG(dbgs() << "***** Machine Function after Domain Reassignment *****\n");
   DEBUG(MF.print(dbgs()));


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D46425.145177.patch
Type: text/x-patch
Size: 412 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180504/10bbbe14/attachment.bin>


More information about the llvm-commits mailing list