Index: clang/lib/CodeGen/CodeGenAction.cpp =================================================================== --- clang/lib/CodeGen/CodeGenAction.cpp +++ clang/lib/CodeGen/CodeGenAction.cpp @@ -946,16 +946,17 @@ }); return {}; }; - Expected BMOrErr = FindThinLTOModule(MBRef); - if (!BMOrErr) - return DiagErrors(BMOrErr.takeError()); - - Expected> MOrErr = - BMOrErr->parseModule(*VMContext); - if (!MOrErr) - return DiagErrors(MOrErr.takeError()); - return std::move(*MOrErr); + if (BMOrErr) { + Expected> MOrErr = + BMOrErr->parseModule(*VMContext); + if (!MOrErr) + return DiagErrors(MOrErr.takeError()); + return std::move(*MOrErr); + } else { + // Suppress error and fall-back to regular parsing. + handleAllErrors(BMOrErr.takeError(), [&](ErrorInfoBase &EIB) {}); + } } llvm::SMDiagnostic Err; Index: clang/test/CodeGen/thinlto_backend.ll =================================================================== --- clang/test/CodeGen/thinlto_backend.ll +++ clang/test/CodeGen/thinlto_backend.ll @@ -20,6 +20,10 @@ ; CHECK-OBJ-IGNORE-EMPTY: T f1 ; CHECK-OBJ-IGNORE-EMPTY: U f2 +; Ensure we don't fail with index and non-ThinLTO object file, and run non-ThinLTO compilation which +; RUN: opt -o %t5.o %s +; RUN: %clang -target x86_64-unknown-linux-gnu -O2 -o %t4.o -x ir %t5.o -c -fthinlto-index=%t.thinlto.bc + ; Ensure f2 was imported ; RUN: %clang -target x86_64-unknown-linux-gnu -O2 -o %t3.o -x ir %t1.o -c -fthinlto-index=%t.thinlto.bc ; RUN: llvm-nm %t3.o | FileCheck --check-prefix=CHECK-OBJ %s