1
- import libc:: { c_int, c_uint} ;
1
+ import libc:: { c_int, c_uint, c_char } ;
2
2
import driver:: session;
3
3
import session:: session;
4
4
import lib:: llvm:: llvm;
@@ -32,6 +32,21 @@ fn llvm_err(sess: session, msg: str) -> ! unsafe {
32
32
} else { sess. fatal ( msg + ": " + str:: unsafe:: from_c_str ( cstr) ) ; }
33
33
}
34
34
35
+ fn WriteOutputFile ( sess : session ,
36
+ PM : lib:: llvm:: PassManagerRef , M : ModuleRef ,
37
+ Triple : * c_char ,
38
+ // FIXME: When #2334 is fixed, change
39
+ // c_uint to FileType
40
+ Output : * c_char , FileType : c_uint ,
41
+ OptLevel : c_int ,
42
+ EnableSegmentedStacks : bool ) {
43
+ let result = llvm:: LLVMRustWriteOutputFile (
44
+ PM , M , Triple , Output , FileType , OptLevel , EnableSegmentedStacks ) ;
45
+ if ( !result) {
46
+ llvm_err ( sess, "Could not write output" ) ;
47
+ }
48
+ }
49
+
35
50
mod write {
36
51
fn is_object_or_assembly_or_exe ( ot : output_type ) -> bool {
37
52
if ot == output_type_assembly || ot == output_type_object ||
@@ -160,7 +175,8 @@ mod write {
160
175
sess. targ_cfg . target_strs . target_triple ,
161
176
|buf_t| {
162
177
str:: as_c_str ( output, |buf_o| {
163
- llvm:: LLVMRustWriteOutputFile (
178
+ WriteOutputFile (
179
+ sess,
164
180
pm. llpm ,
165
181
llmod,
166
182
buf_t,
@@ -181,7 +197,8 @@ mod write {
181
197
sess. targ_cfg . target_strs . target_triple ,
182
198
|buf_t| {
183
199
str:: as_c_str ( output, |buf_o| {
184
- llvm:: LLVMRustWriteOutputFile (
200
+ WriteOutputFile (
201
+ sess,
185
202
pm. llpm ,
186
203
llmod,
187
204
buf_t,
@@ -200,7 +217,8 @@ mod write {
200
217
sess. targ_cfg . target_strs . target_triple ,
201
218
|buf_t| {
202
219
str:: as_c_str ( output, |buf_o| {
203
- llvm:: LLVMRustWriteOutputFile (
220
+ WriteOutputFile (
221
+ sess,
204
222
pm. llpm ,
205
223
llmod,
206
224
buf_t,
0 commit comments