[llvm-dev] ORC JIT fails with standard math librrary

Frank Winter via llvm-dev llvm-dev at lists.llvm.org
Tue Mar 26 13:36:44 PDT 2019


Hi,

I still can't get IR functions to JIT compile with the ORC JIT when they 
contain a call to the standard math library. Attached is a minimal exploit.

The program 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.

Does anyone see what's going on or is it time to file a bug report?


Regards,

Frank




-------------- next part --------------
source_filename = "module"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"

declare float @cosf(float)

define float @func_ir(float %arg0) {
entrypoint:
  %0 = call float @cosf(float %arg0)
  ret float %0
}
-------------- next part --------------
source_filename = "module"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"


define float @func_ir(float %arg0) {
entrypoint:
  ret float %arg0
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: KaleidoscopeJIT.h
Type: text/x-chdr
Size: 5065 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190326/10780d64/attachment.h>
-------------- next part --------------

LLVM_CONFIG = /home/fwinter/toolchain/install/llvm-8.0-x86-debug/bin/llvm-config

LLVM_CXXFLAGS = $(shell $(LLVM_CONFIG) --cxxflags)
LLVM_LDFLAGS  = $(shell $(LLVM_CONFIG) --ldflags)
LLVM_LIBS     = $(shell $(LLVM_CONFIG) --libs)

all: test

test.o: test.cc KaleidoscopeJIT.h
	g++ -c -o $@ $< $(LLVM_CXXFLAGS)

test: test.o
	g++ -o $@ $< $(LLVM_LDFLAGS) $(LLVM_LIBS)

clean:
	rm -f *.o
	rm -f test
-------------- next part --------------
A non-text attachment was scrubbed...
Name: test.cc
Type: text/x-c++src
Size: 2060 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190326/10780d64/attachment.cc>


More information about the llvm-dev mailing list