[LLVMdev] JIT simple module and accessing the value fails

Tobias Pankrath
Thu, 08 Jan 2015 16:11:15 -0000

I'm using the llvm-c API and want to use the JIT. I've created the
following
module

; ModuleID = '_tmp'

@a = global i64 5

define i64 @__tempfunc() {
entry:
  %a_val = load i64* @a
  ret i64 %a_val
}

This output is generated by LLVMDumpModule just before I call LLVMRunFunction.
Which yields a LLVMGenericValueRef. However converting the result to a 64bit
integer via LLVMGenericValueToInt(gv, true), it results in 360287970189639680
or something similar - not 5. Converting via LLVMGenericValueToInt(gv, false)
didn't help either.

How can I use global variables in a JIT situation? Is anything wrong with the
IR?