mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 18:54:02 +01:00
Make sure that the go bindings call LLVMInitializeMCJITCompilerOptions
so that they initialize the code generation model to the correct (non-zero) default model. llvm-svn: 222804
This commit is contained in:
parent
0734168db8
commit
9c25973a19
@ -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…
Reference in New Issue
Block a user