summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorDimitry Andric <dimitry@andric.com>2018-05-12 19:59:54 +0000
committerDimitry Andric <dimitry@andric.com>2018-05-12 19:59:54 +0000
commit74f298920281cbf94facf61fe06ddb1a326de704 (patch)
tree5832e351a5f32e572afb2786c5b8ffc5563f4919 /llvm/lib
parent6a68f38c0c121f00070fdac663486ced7f6f4976 (diff)
downloadbcm5719-llvm-74f298920281cbf94facf61fe06ddb1a326de704.tar.gz
bcm5719-llvm-74f298920281cbf94facf61fe06ddb1a326de704.zip
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 llvm-svn: 332176
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/X86/X86DomainReassignment.cpp3
1 files changed, 1 insertions, 2 deletions
diff --git a/llvm/lib/Target/X86/X86DomainReassignment.cpp b/llvm/lib/Target/X86/X86DomainReassignment.cpp
index bc0f55f581f..b41640f7bd7 100644
--- a/llvm/lib/Target/X86/X86DomainReassignment.cpp
+++ b/llvm/lib/Target/X86/X86DomainReassignment.cpp
@@ -750,8 +750,7 @@ bool X86DomainReassignment::runOnMachineFunction(MachineFunction &MF) {
Changed = true;
}
- for (auto I : Converters)
- delete I.second;
+ DeleteContainerSeconds(Converters);
DEBUG(dbgs() << "***** Machine Function after Domain Reassignment *****\n");
DEBUG(MF.print(dbgs()));
OpenPOWER on IntegriCloud