mirror of
https://github.com/RPCSX/llvm.git
synced 2025-01-23 04:35:43 +00:00
Make sure that the go bindings call LLVMInitializeMCJITCompilerOptions
so that they initialize the code generation model to the correct (non-zero) default model. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@222804 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c0dae440e6
commit
82ec8476af
@ -30,11 +30,9 @@ type GenericValue struct {
|
||||
type ExecutionEngine struct {
|
||||
C C.LLVMExecutionEngineRef
|
||||
}
|
||||
|
||||
type MCJITCompilerOptions struct {
|
||||
OptLevel uint
|
||||
CodeModel CodeModel
|
||||
NoFramePointerElim bool
|
||||
EnableFastISel bool
|
||||
C C.struct_LLVMMCJITCompilerOptions
|
||||
}
|
||||
|
||||
// helpers
|
||||
@ -96,15 +94,19 @@ func NewInterpreter(m Module) (ee ExecutionEngine, err error) {
|
||||
return
|
||||
}
|
||||
|
||||
func NewMCJITCompilerOptions() MCJITCompilerOptions {
|
||||
var options C.struct_LLVMMCJITCompilerOptions
|
||||
C.LLVMInitializeMCJITCompilerOptions(&options, C.size_t(unsafe.Sizeof(C.struct_LLVMMCJITCompilerOptions{})))
|
||||
return MCJITCompilerOptions{options}
|
||||
}
|
||||
|
||||
func SetMCJITOptimizationLevel(options MCJITCompilerOptions, level uint) {
|
||||
options.C.OptLevel = C.uint(level)
|
||||
}
|
||||
|
||||
func NewMCJITCompiler(m Module, options MCJITCompilerOptions) (ee ExecutionEngine, err error) {
|
||||
var cmsg *C.char
|
||||
copts := C.struct_LLVMMCJITCompilerOptions{
|
||||
OptLevel: C.unsigned(options.OptLevel),
|
||||
CodeModel: C.LLVMCodeModel(options.CodeModel),
|
||||
NoFramePointerElim: boolToLLVMBool(options.NoFramePointerElim),
|
||||
EnableFastISel: boolToLLVMBool(options.EnableFastISel),
|
||||
}
|
||||
fail := C.LLVMCreateMCJITCompilerForModule(&ee.C, m.C, &copts, C.size_t(unsafe.Sizeof(copts)), &cmsg)
|
||||
fail := C.LLVMCreateMCJITCompilerForModule(&ee.C, m.C, &options.C, C.size_t(unsafe.Sizeof(C.struct_LLVMMCJITCompilerOptions{})), &cmsg)
|
||||
if fail != 0 {
|
||||
ee.C = nil
|
||||
err = errors.New(C.GoString(cmsg))
|
||||
|
@ -66,7 +66,9 @@ func TestFactorial(t *testing.T) {
|
||||
return
|
||||
}
|
||||
|
||||
engine, err := NewMCJITCompiler(mod, MCJITCompilerOptions{OptLevel: 2})
|
||||
options := NewMCJITCompilerOptions()
|
||||
SetMCJITOptimizationLevel(options, 2)
|
||||
engine, err := NewMCJITCompiler(mod, options)
|
||||
if err != nil {
|
||||
t.Errorf("Error creating JIT: %s", err)
|
||||
return
|
||||
|
Loading…
x
Reference in New Issue
Block a user