[llvm-dev] MCJIT, can't use with math functions
Frank Winter via llvm-dev
llvm-dev at lists.llvm.org
Mon Apr 1 07:45:38 PDT 2019
Hi Lang!
Yes, I was able to boil it down to a minimal test case.
The test case uses the KaleidoscopeJIT.h that ships with LLVM 8 (except
that I had to expose the Datalayout). It reads from the filesystem an IR
file (filename "func_works.ll" or "func_cos_fails.ll) and asks the ORC
JIT first for the symbol "func_ir" and then for the address.
In case the file "func_works.ll" was read the program succeeds with:
symbol found!
address found!
In case the file "func_cos_fails.ll" was read the program fails with:
symbol found!
Failure value returned from cantFail wrapped call
UNREACHABLE executed at
install/llvm-8.0-x86-debug/include/llvm/Support/Error.h:732!
Stack dump:
This was tested on an x86 Linux Ubuntu system.
LLVM was configured with
cmake -G "Unix Makefiles" \
-DBUILD_SHARED_LIBS="ON" \
-DLLVM_ENABLE_RTTI="ON" \
-DLLVM_ENABLE_ZLIB="OFF" \
-DLLVM_ENABLE_TERMINFO="OFF" \
-DCMAKE_BUILD_TYPE="Debug" \
-DCMAKE_INSTALL_PREFIX=$CMAKE_INSTALL_PREFIX \
-DLLVM_TARGETS_TO_BUILD="X86" \
$SRC
I hope that makes it easier to see what's going on.
Best,
Frank
On 3/29/19 5:37 PM, Lang Hames wrote:
> Hi Frank,
>
> That error message/location indicates that the JIT was able to "find"
> the 'cosf' symbol, but not able to get an address for it. That kind of
> result is usually restricted to JIT'd code: when the JIT find's a
> not-yet-compiled definition, tries to compile it to get a final
> address, and fails. It sounds like you are using a libm function
> though, and I would expect that to either not be found at all, or to
> be found and trivially have an address.
>
> Are you able to provide some more context? Is the code line you shared
> from LLVM, or your own ORC-based JIT? Do you have a test case that you
> can share?
>
> Cheers,
> Lang.
>
> On Fri, Mar 22, 2019 at 1:43 PM Frank Winter via llvm-dev
> <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote:
>
> Hi,
>
> for my application (uses Builder and MCJIT) I am making the
> transition
> LLVM 6.0 -> 8.0.
>
> It runs fine for self-contained functions, but whenever a jit-ed
> function contains calls to the math library (e.g. @cosf) it seems to
> have problems getting the address after successfully finding the
> symbol:
>
> Failure value returned from cantFail wrapped call
> UNREACHABLE executed at
> ~/toolchain/install/llvm-8.0-x86-debug/include/llvm/Support/Error.h:732!
>
> if (auto Sym = CompileLayer.findSymbol(MangledNameStream.str(),true))
> {
> void* fptr = (void *)cantFail(Sym.getAddress());
>
> The last statement fails with the above message.
>
>
> Has anything related to using MCJIT with math library functions
> changed
> since LLVM 6.0?
>
>
> Best,
>
> Frank
>
>
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
> <https://gcc01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.llvm.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fllvm-dev&data=02%7C01%7Cfwinter%40jlab.org%7Ca89da3e7b6744855dc1308d6b48eb52f%7Cb4d7ee1f4fb34f0690372b5b522042ab%7C1%7C1%7C636894922351400719&sdata=IX3IZBCWPU0xIN44ODXU9jFonCRTDeRpGARZt0fJVBU%3D&reserved=0>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190401/96ff88a7/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: jit_fails.tgz
Type: application/x-compressed-tar
Size: 3054 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190401/96ff88a7/attachment.bin>
More information about the llvm-dev
mailing list