Fix the order of destructors in LibLTOCodeGenerator
[oota-llvm.git] / tools / lto / lto.cpp
index d13de57e830c135c37de060b9f0d42620081e3e9..d8f99c050a34caf43bc1469394925b6f45b5eb61 100644 (file)
@@ -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;
 };