Index: lib/LTO/ThinLTOCodeGenerator.cpp =================================================================== --- lib/LTO/ThinLTOCodeGenerator.cpp +++ lib/LTO/ThinLTOCodeGenerator.cpp @@ -521,6 +521,7 @@ Pool.async([&](int count) { LLVMContext Context; Context.setDiscardValueNames(LTODiscardValueNames); + Context.enableDebugTypeODRUniquing(); // Parse module now auto TheModule = loadModuleFromBuffer(ModuleBuffer, Context, false); Index: tools/opt/opt.cpp =================================================================== --- tools/opt/opt.cpp +++ tools/opt/opt.cpp @@ -102,6 +102,10 @@ VerifyEach("verify-each", cl::desc("Verify after each transform")); static cl::opt<bool> + DisableDITypeMap("disable-debug-info-type-map", + cl::desc("Don't use a uniquing type map for debug info")); + +static cl::opt<bool> StripDebug("strip-debug", cl::desc("Strip debugger symbol info from translation unit")); @@ -365,6 +369,8 @@ SMDiagnostic Err; Context.setDiscardValueNames(DiscardValueNames); + if (!DisableDITypeMap) + Context.enableDebugTypeODRUniquing(); // Load the input module... std::unique_ptr<Module> M = parseIRFile(InputFilename, Err, Context);