comparison tools/binding/llvm/executionengine.d @ 1274:4ff9ab0d472c

Check in some old changes to the binding, from before I had commit access. - Add bindings for InsertValue and ExtractValue - Updates to use new APIs where they were renamed or removed. - Add generic error messages if LLVM didn't provide one. - Enable typesafe variadic arguments for GetGEP.
author Frits van Bommel <fvbommel wxs.nl>
date Mon, 27 Apr 2009 22:34:36 +0200
parents 1ba61de8796b
children
comparison
equal deleted inserted replaced
1273:1ba61de8796b 1274:4ff9ab0d472c
98 char* err; 98 char* err;
99 if (LLVMCreateExecutionEngine(&ee, mp.ll, &err)) 99 if (LLVMCreateExecutionEngine(&ee, mp.ll, &err))
100 { 100 {
101 auto errmsg = from_stringz(err).dup; 101 auto errmsg = from_stringz(err).dup;
102 LLVMDisposeMessage(err); 102 LLVMDisposeMessage(err);
103 if (errmsg.length == 0)
104 errmsg = "Error creating execution engine";
103 throw new LLVMException(errmsg); 105 throw new LLVMException(errmsg);
104 } 106 }
105 return new ExecutionEngine(ee); 107 return new ExecutionEngine(ee);
106 } 108 }
107 /// 109 ///
111 char* err; 113 char* err;
112 if (LLVMCreateInterpreter(&ee, mp.ll, &err)) 114 if (LLVMCreateInterpreter(&ee, mp.ll, &err))
113 { 115 {
114 auto errmsg = from_stringz(err).dup; 116 auto errmsg = from_stringz(err).dup;
115 LLVMDisposeMessage(err); 117 LLVMDisposeMessage(err);
118 if (errmsg.length == 0)
119 errmsg = "Error creating interpreter";
116 throw new LLVMException(errmsg); 120 throw new LLVMException(errmsg);
117 } 121 }
118 return new ExecutionEngine(ee); 122 return new ExecutionEngine(ee);
119 } 123 }
120 /// 124 ///
124 char* err; 128 char* err;
125 if (LLVMCreateJITCompiler(&ee, mp.ll, &err)) 129 if (LLVMCreateJITCompiler(&ee, mp.ll, &err))
126 { 130 {
127 auto errmsg = from_stringz(err).dup; 131 auto errmsg = from_stringz(err).dup;
128 LLVMDisposeMessage(err); 132 LLVMDisposeMessage(err);
133 if (errmsg.length == 0)
134 errmsg = "Error creating JIT";
129 throw new LLVMException(errmsg); 135 throw new LLVMException(errmsg);
130 } 136 }
131 return new ExecutionEngine(ee); 137 return new ExecutionEngine(ee);
132 } 138 }
133 /// 139 ///
197 char* err; 203 char* err;
198 if (LLVMRemoveModuleProvider(ee, mp.ll, &mod, &err)) 204 if (LLVMRemoveModuleProvider(ee, mp.ll, &mod, &err))
199 { 205 {
200 auto errmsg = from_stringz(err).dup; 206 auto errmsg = from_stringz(err).dup;
201 LLVMDisposeMessage(err); 207 LLVMDisposeMessage(err);
208 if (errmsg.length == 0)
209 errmsg = "Error removing ModuleProvider from ExecutionEngine";
202 throw new LLVMException(errmsg); 210 throw new LLVMException(errmsg);
203 } 211 }
204 return Module.GetExisting(mod); 212 return Module.GetExisting(mod);
205 } 213 }
206 /// 214 ///