[MCJIT] Fix a case of Error::success() being passed to report_fatal_error.
authorLang Hames <lhames@gmail.com>
Wed, 15 Aug 2018 20:11:21 +0000 (20:11 +0000)
committerLang Hames <lhames@gmail.com>
Wed, 15 Aug 2018 20:11:21 +0000 (20:11 +0000)
MCJIT::getSymbolAddress was handling a non-fatal error condition of JITSymbol
as fatal. JITSymbol::operator bool returns false if no address is available
but no error is set. This can occur e.g. if the symbol name was not found.

Patch by Jascha Wetzel. Thanks Jascha!

llvm-svn: 339809

llvm/lib/ExecutionEngine/MCJIT/MCJIT.cpp

index 2c663c2..25c0cb5 100644 (file)
@@ -326,8 +326,9 @@ uint64_t MCJIT::getSymbolAddress(const std::string &Name,
       return *AddrOrErr;
     else
       report_fatal_error(AddrOrErr.takeError());
-  } else
+  } else if (auto Err = Sym.takeError())
     report_fatal_error(Sym.takeError());
+  return 0;
 }
 
 JITSymbol MCJIT::findSymbol(const std::string &Name,