@@ -133,8 +133,12 @@ KernelTranslator::loadKernels(llvm::LLVMContext &LLVMCtx,
133133 // read last. This could cause problems if different modules contain
134134 // definitions with the same name, but different body/content.
135135 // Check that this is not problematic.
136- Linker::linkModules (*Result, std::move (NewMod),
137- Linker::Flags::OverrideFromSrc);
136+ const bool HasErrors = Linker::linkModules (
137+ *Result, std::move (NewMod), Linker::Flags::OverrideFromSrc);
138+ if (HasErrors)
139+ return createStringError (inconvertibleErrorCode (),
140+ " Failed to link modules" );
141+
138142 if (AddressBits != BinInfo.AddressBits ) {
139143 return createStringError (
140144 inconvertibleErrorCode (),
@@ -300,9 +304,9 @@ KernelTranslator::translateToPTX(SYCLKernelInfo &KernelInfo, llvm::Module &Mod,
300304 }
301305
302306 // FIXME: Check whether we can provide more accurate target information here
303- auto * TargetMachine = Target->createTargetMachine (
307+ std::unique_ptr< TargetMachine> TargetMachine ( Target->createTargetMachine (
304308 TargetTriple, CPU, Features, {}, llvm::Reloc::PIC_, std::nullopt ,
305- llvm::CodeGenOptLevel::Default);
309+ llvm::CodeGenOptLevel::Default)) ;
306310
307311 llvm::legacy::PassManager PM;
308312
@@ -380,9 +384,9 @@ KernelTranslator::translateToAMDGCN(SYCLKernelInfo &KernelInfo,
380384 }
381385
382386 // FIXME: Check whether we can provide more accurate target information here
383- auto * TargetMachine = Target->createTargetMachine (
387+ std::unique_ptr< TargetMachine> TargetMachine ( Target->createTargetMachine (
384388 TargetTriple, CPU, Features, {}, llvm::Reloc::PIC_, std::nullopt ,
385- llvm::CodeGenOptLevel::Default);
389+ llvm::CodeGenOptLevel::Default)) ;
386390
387391 std::string AMDObj;
388392 {
0 commit comments