diff --git a/llvm/lib/LTO/LTOCodeGenerator.cpp b/llvm/lib/LTO/LTOCodeGenerator.cpp index cdeab98ff6c98..23e22e7ffcd5c 100644 --- a/llvm/lib/LTO/LTOCodeGenerator.cpp +++ b/llvm/lib/LTO/LTOCodeGenerator.cpp @@ -376,11 +376,11 @@ bool LTOCodeGenerator::determineTarget() { return true; TripleStr = MergedModule->getTargetTriple().str(); - llvm::Triple Triple(TripleStr); if (TripleStr.empty()) { TripleStr = sys::getDefaultTargetTriple(); - MergedModule->setTargetTriple(Triple); + MergedModule->setTargetTriple(Triple(TripleStr)); } + llvm::Triple Triple(TripleStr); // create target machine from info for merged modules std::string ErrMsg; diff --git a/llvm/test/LTO/empty-triple.ll b/llvm/test/LTO/empty-triple.ll new file mode 100644 index 0000000000000..b4af8607ac353 --- /dev/null +++ b/llvm/test/LTO/empty-triple.ll @@ -0,0 +1,12 @@ +; RUN: llvm-as < %s >%t1 +; RUN: llvm-lto -exported-symbol=main -filetype=asm -o - %t1 2>&1 | FileCheck %s + +; The test is to check the triple is set to default one when it's empty. +; Otherwise, an error will be raised by llvm-lto. + +; CHECK-LABEL: main +; CHECK-NOT: error +define void @main() { +entry: + ret void +}