mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-12 06:06:32 +00:00
Fix the order of destructors in LibLTOCodeGenerator
Summary: The order of destructors in LTOCodeGenerator gets changed in r254696. It is possible for LTOCodeGenerator to have a MergedModule created in the OwnedContext, in which case the module must be destructed before the context. Reviewers: rafael, dexonsmith Subscribers: llvm-commits, joker.eph Differential Revision: http://reviews.llvm.org/D15346 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@255092 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
65422bf239
commit
1208ef58cc
@ -148,6 +148,8 @@ struct LTOCodeGenerator {
|
||||
|
||||
LLVMContext &getContext() { return Context; }
|
||||
|
||||
void resetMergedModule() { MergedModule.reset(); }
|
||||
|
||||
private:
|
||||
void initializeLTOPasses();
|
||||
|
||||
|
@ -124,6 +124,10 @@ struct LibLTOCodeGenerator : LTOCodeGenerator {
|
||||
: LTOCodeGenerator(*Context), OwnedContext(std::move(Context)) {
|
||||
setDiagnosticHandler(handleLibLTODiagnostic, nullptr); }
|
||||
|
||||
// Reset the module first in case MergedModule is created in OwnedContext.
|
||||
// Module must be destructed before its context gets destructed.
|
||||
~LibLTOCodeGenerator() { resetMergedModule(); }
|
||||
|
||||
std::unique_ptr<MemoryBuffer> NativeObjectFile;
|
||||
std::unique_ptr<LLVMContext> OwnedContext;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user