OSDN Git Service

Clear converters map after X86 Domain Reassignment to avoid crashes
authorDimitry Andric <dimitry@andric.com>
Sat, 12 May 2018 19:59:54 +0000 (19:59 +0000)
committerDimitry Andric <dimitry@andric.com>
Sat, 12 May 2018 19:59:54 +0000 (19:59 +0000)
commitd9314d95a5744811948e4c6a7973aa5af128ac94
treee556df8d31bb83f5a7936ae3b1282a1f32bfc06f
parentc1d2340df225623d95d9db45215b99eab4c10f1a
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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@332176 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86DomainReassignment.cpp