[PATCH] D50429: [MCJIT] Fix case of Error::success being passed to report_fatal_error.

Jascha Wetzel via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 8 03:13:33 PDT 2018


jascha created this revision.
jascha added a reviewer: lhames.
Herald added a subscriber: llvm-commits.

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.


Repository:
  rL LLVM

https://reviews.llvm.org/D50429

Files:
  lib/ExecutionEngine/MCJIT/MCJIT.cpp


Index: lib/ExecutionEngine/MCJIT/MCJIT.cpp
===================================================================
--- lib/ExecutionEngine/MCJIT/MCJIT.cpp
+++ lib/ExecutionEngine/MCJIT/MCJIT.cpp
@@ -321,13 +321,15 @@
     raw_string_ostream MangledNameStream(MangledName);
     Mangler::getNameWithPrefix(MangledNameStream, Name, getDataLayout());
   }
-  if (auto Sym = findSymbol(MangledName, CheckFunctionsOnly)) {
+  auto Sym = findSymbol(MangledName, CheckFunctionsOnly);
+  if (Sym) {
     if (auto AddrOrErr = Sym.getAddress())
       return *AddrOrErr;
     else
       report_fatal_error(AddrOrErr.takeError());
-  } else
-    report_fatal_error(Sym.takeError());
+  } else if (auto err = Sym.takeError())
+    report_fatal_error(std::move(err));
+  return 0;
 }
 
 JITSymbol MCJIT::findSymbol(const std::string &Name,


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D50429.159669.patch
Type: text/x-patch
Size: 824 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180808/25a64284/attachment.bin>


More information about the llvm-commits mailing list