diff options
| author | Dimitry Andric <dimitry@andric.com> | 2018-05-12 19:59:54 +0000 |
|---|---|---|
| committer | Dimitry Andric <dimitry@andric.com> | 2018-05-12 19:59:54 +0000 |
| commit | 74f298920281cbf94facf61fe06ddb1a326de704 (patch) | |
| tree | 5832e351a5f32e572afb2786c5b8ffc5563f4919 /llvm/lib | |
| parent | 6a68f38c0c121f00070fdac663486ced7f6f4976 (diff) | |
| download | bcm5719-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.cpp | 3 |
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())); |

