mir_sys/
bindings.rs

1/* automatically generated by rust-bindgen 0.71.1 */
2
3use libc::FILE;
4use super::{MIR_op_t, MIR_insn};
5
6pub const MIR_API_VERSION: f64 = -1.0;
7pub const MIR_NO_IO: u32 = 0;
8pub const MIR_NO_SCAN: u32 = 0;
9pub const MIR_BLK_NUM: u32 = 5;
10pub const MIR_PTR32: u32 = 0;
11pub const MIR_PTR64: u32 = 1;
12pub const MIR_MAX_SCALE: u32 = 255;
13pub const MIR_MAX_REG_NUM: u32 = 4294967295;
14pub const MIR_NON_VAR: u32 = 4294967295;
15pub type htab_hash_t = ::std::os::raw::c_uint;
16pub const MIR_no_error: MIR_error_type = 0;
17pub const MIR_syntax_error: MIR_error_type = 1;
18pub const MIR_binary_io_error: MIR_error_type = 2;
19pub const MIR_alloc_error: MIR_error_type = 3;
20pub const MIR_finish_error: MIR_error_type = 4;
21pub const MIR_no_module_error: MIR_error_type = 5;
22pub const MIR_nested_module_error: MIR_error_type = 6;
23pub const MIR_no_func_error: MIR_error_type = 7;
24pub const MIR_func_error: MIR_error_type = 8;
25pub const MIR_vararg_func_error: MIR_error_type = 9;
26pub const MIR_nested_func_error: MIR_error_type = 10;
27pub const MIR_wrong_param_value_error: MIR_error_type = 11;
28pub const MIR_hard_reg_error: MIR_error_type = 12;
29pub const MIR_reserved_name_error: MIR_error_type = 13;
30pub const MIR_import_export_error: MIR_error_type = 14;
31pub const MIR_undeclared_func_reg_error: MIR_error_type = 15;
32pub const MIR_repeated_decl_error: MIR_error_type = 16;
33pub const MIR_reg_type_error: MIR_error_type = 17;
34pub const MIR_wrong_type_error: MIR_error_type = 18;
35pub const MIR_unique_reg_error: MIR_error_type = 19;
36pub const MIR_undeclared_op_ref_error: MIR_error_type = 20;
37pub const MIR_ops_num_error: MIR_error_type = 21;
38pub const MIR_call_op_error: MIR_error_type = 22;
39pub const MIR_unspec_op_error: MIR_error_type = 23;
40pub const MIR_wrong_lref_error: MIR_error_type = 24;
41pub const MIR_ret_error: MIR_error_type = 25;
42pub const MIR_op_mode_error: MIR_error_type = 26;
43pub const MIR_out_op_error: MIR_error_type = 27;
44pub const MIR_invalid_insn_error: MIR_error_type = 28;
45pub const MIR_ctx_change_error: MIR_error_type = 29;
46pub type MIR_error_type = ::std::os::raw::c_uint;
47pub use self::MIR_error_type as MIR_error_type_t;
48pub type MIR_error_func_t = ::std::option::Option<
49    unsafe extern "C-unwind" fn(
50        error_type: MIR_error_type_t,
51        format: *const ::std::os::raw::c_char,
52        ...
53    ) -> !,
54>;
55pub const MIR_MOV: MIR_insn_code_t = 0;
56pub const MIR_FMOV: MIR_insn_code_t = 1;
57pub const MIR_DMOV: MIR_insn_code_t = 2;
58pub const MIR_LDMOV: MIR_insn_code_t = 3;
59pub const MIR_EXT8: MIR_insn_code_t = 4;
60pub const MIR_EXT16: MIR_insn_code_t = 5;
61pub const MIR_EXT32: MIR_insn_code_t = 6;
62pub const MIR_UEXT8: MIR_insn_code_t = 7;
63pub const MIR_UEXT16: MIR_insn_code_t = 8;
64pub const MIR_UEXT32: MIR_insn_code_t = 9;
65pub const MIR_I2F: MIR_insn_code_t = 10;
66pub const MIR_I2D: MIR_insn_code_t = 11;
67pub const MIR_I2LD: MIR_insn_code_t = 12;
68pub const MIR_UI2F: MIR_insn_code_t = 13;
69pub const MIR_UI2D: MIR_insn_code_t = 14;
70pub const MIR_UI2LD: MIR_insn_code_t = 15;
71pub const MIR_F2I: MIR_insn_code_t = 16;
72pub const MIR_D2I: MIR_insn_code_t = 17;
73pub const MIR_LD2I: MIR_insn_code_t = 18;
74pub const MIR_F2D: MIR_insn_code_t = 19;
75pub const MIR_F2LD: MIR_insn_code_t = 20;
76pub const MIR_D2F: MIR_insn_code_t = 21;
77pub const MIR_D2LD: MIR_insn_code_t = 22;
78pub const MIR_LD2F: MIR_insn_code_t = 23;
79pub const MIR_LD2D: MIR_insn_code_t = 24;
80pub const MIR_NEG: MIR_insn_code_t = 25;
81pub const MIR_NEGS: MIR_insn_code_t = 26;
82pub const MIR_FNEG: MIR_insn_code_t = 27;
83pub const MIR_DNEG: MIR_insn_code_t = 28;
84pub const MIR_LDNEG: MIR_insn_code_t = 29;
85pub const MIR_ADDR: MIR_insn_code_t = 30;
86pub const MIR_ADDR8: MIR_insn_code_t = 31;
87pub const MIR_ADDR16: MIR_insn_code_t = 32;
88pub const MIR_ADDR32: MIR_insn_code_t = 33;
89pub const MIR_ADD: MIR_insn_code_t = 34;
90pub const MIR_ADDS: MIR_insn_code_t = 35;
91pub const MIR_FADD: MIR_insn_code_t = 36;
92pub const MIR_DADD: MIR_insn_code_t = 37;
93pub const MIR_LDADD: MIR_insn_code_t = 38;
94pub const MIR_SUB: MIR_insn_code_t = 39;
95pub const MIR_SUBS: MIR_insn_code_t = 40;
96pub const MIR_FSUB: MIR_insn_code_t = 41;
97pub const MIR_DSUB: MIR_insn_code_t = 42;
98pub const MIR_LDSUB: MIR_insn_code_t = 43;
99pub const MIR_MUL: MIR_insn_code_t = 44;
100pub const MIR_MULS: MIR_insn_code_t = 45;
101pub const MIR_FMUL: MIR_insn_code_t = 46;
102pub const MIR_DMUL: MIR_insn_code_t = 47;
103pub const MIR_LDMUL: MIR_insn_code_t = 48;
104pub const MIR_DIV: MIR_insn_code_t = 49;
105pub const MIR_DIVS: MIR_insn_code_t = 50;
106pub const MIR_UDIV: MIR_insn_code_t = 51;
107pub const MIR_UDIVS: MIR_insn_code_t = 52;
108pub const MIR_FDIV: MIR_insn_code_t = 53;
109pub const MIR_DDIV: MIR_insn_code_t = 54;
110pub const MIR_LDDIV: MIR_insn_code_t = 55;
111pub const MIR_MOD: MIR_insn_code_t = 56;
112pub const MIR_MODS: MIR_insn_code_t = 57;
113pub const MIR_UMOD: MIR_insn_code_t = 58;
114pub const MIR_UMODS: MIR_insn_code_t = 59;
115pub const MIR_AND: MIR_insn_code_t = 60;
116pub const MIR_ANDS: MIR_insn_code_t = 61;
117pub const MIR_OR: MIR_insn_code_t = 62;
118pub const MIR_ORS: MIR_insn_code_t = 63;
119pub const MIR_XOR: MIR_insn_code_t = 64;
120pub const MIR_XORS: MIR_insn_code_t = 65;
121pub const MIR_LSH: MIR_insn_code_t = 66;
122pub const MIR_LSHS: MIR_insn_code_t = 67;
123pub const MIR_RSH: MIR_insn_code_t = 68;
124pub const MIR_RSHS: MIR_insn_code_t = 69;
125pub const MIR_URSH: MIR_insn_code_t = 70;
126pub const MIR_URSHS: MIR_insn_code_t = 71;
127pub const MIR_EQ: MIR_insn_code_t = 72;
128pub const MIR_EQS: MIR_insn_code_t = 73;
129pub const MIR_FEQ: MIR_insn_code_t = 74;
130pub const MIR_DEQ: MIR_insn_code_t = 75;
131pub const MIR_LDEQ: MIR_insn_code_t = 76;
132pub const MIR_NE: MIR_insn_code_t = 77;
133pub const MIR_NES: MIR_insn_code_t = 78;
134pub const MIR_FNE: MIR_insn_code_t = 79;
135pub const MIR_DNE: MIR_insn_code_t = 80;
136pub const MIR_LDNE: MIR_insn_code_t = 81;
137pub const MIR_LT: MIR_insn_code_t = 82;
138pub const MIR_LTS: MIR_insn_code_t = 83;
139pub const MIR_ULT: MIR_insn_code_t = 84;
140pub const MIR_ULTS: MIR_insn_code_t = 85;
141pub const MIR_FLT: MIR_insn_code_t = 86;
142pub const MIR_DLT: MIR_insn_code_t = 87;
143pub const MIR_LDLT: MIR_insn_code_t = 88;
144pub const MIR_LE: MIR_insn_code_t = 89;
145pub const MIR_LES: MIR_insn_code_t = 90;
146pub const MIR_ULE: MIR_insn_code_t = 91;
147pub const MIR_ULES: MIR_insn_code_t = 92;
148pub const MIR_FLE: MIR_insn_code_t = 93;
149pub const MIR_DLE: MIR_insn_code_t = 94;
150pub const MIR_LDLE: MIR_insn_code_t = 95;
151pub const MIR_GT: MIR_insn_code_t = 96;
152pub const MIR_GTS: MIR_insn_code_t = 97;
153pub const MIR_UGT: MIR_insn_code_t = 98;
154pub const MIR_UGTS: MIR_insn_code_t = 99;
155pub const MIR_FGT: MIR_insn_code_t = 100;
156pub const MIR_DGT: MIR_insn_code_t = 101;
157pub const MIR_LDGT: MIR_insn_code_t = 102;
158pub const MIR_GE: MIR_insn_code_t = 103;
159pub const MIR_GES: MIR_insn_code_t = 104;
160pub const MIR_UGE: MIR_insn_code_t = 105;
161pub const MIR_UGES: MIR_insn_code_t = 106;
162pub const MIR_FGE: MIR_insn_code_t = 107;
163pub const MIR_DGE: MIR_insn_code_t = 108;
164pub const MIR_LDGE: MIR_insn_code_t = 109;
165pub const MIR_ADDO: MIR_insn_code_t = 110;
166pub const MIR_ADDOS: MIR_insn_code_t = 111;
167pub const MIR_SUBO: MIR_insn_code_t = 112;
168pub const MIR_SUBOS: MIR_insn_code_t = 113;
169pub const MIR_MULO: MIR_insn_code_t = 114;
170pub const MIR_MULOS: MIR_insn_code_t = 115;
171pub const MIR_UMULO: MIR_insn_code_t = 116;
172pub const MIR_UMULOS: MIR_insn_code_t = 117;
173pub const MIR_JMP: MIR_insn_code_t = 118;
174pub const MIR_BT: MIR_insn_code_t = 119;
175pub const MIR_BTS: MIR_insn_code_t = 120;
176pub const MIR_BF: MIR_insn_code_t = 121;
177pub const MIR_BFS: MIR_insn_code_t = 122;
178pub const MIR_BEQ: MIR_insn_code_t = 123;
179pub const MIR_BEQS: MIR_insn_code_t = 124;
180pub const MIR_FBEQ: MIR_insn_code_t = 125;
181pub const MIR_DBEQ: MIR_insn_code_t = 126;
182pub const MIR_LDBEQ: MIR_insn_code_t = 127;
183pub const MIR_BNE: MIR_insn_code_t = 128;
184pub const MIR_BNES: MIR_insn_code_t = 129;
185pub const MIR_FBNE: MIR_insn_code_t = 130;
186pub const MIR_DBNE: MIR_insn_code_t = 131;
187pub const MIR_LDBNE: MIR_insn_code_t = 132;
188pub const MIR_BLT: MIR_insn_code_t = 133;
189pub const MIR_BLTS: MIR_insn_code_t = 134;
190pub const MIR_UBLT: MIR_insn_code_t = 135;
191pub const MIR_UBLTS: MIR_insn_code_t = 136;
192pub const MIR_FBLT: MIR_insn_code_t = 137;
193pub const MIR_DBLT: MIR_insn_code_t = 138;
194pub const MIR_LDBLT: MIR_insn_code_t = 139;
195pub const MIR_BLE: MIR_insn_code_t = 140;
196pub const MIR_BLES: MIR_insn_code_t = 141;
197pub const MIR_UBLE: MIR_insn_code_t = 142;
198pub const MIR_UBLES: MIR_insn_code_t = 143;
199pub const MIR_FBLE: MIR_insn_code_t = 144;
200pub const MIR_DBLE: MIR_insn_code_t = 145;
201pub const MIR_LDBLE: MIR_insn_code_t = 146;
202pub const MIR_BGT: MIR_insn_code_t = 147;
203pub const MIR_BGTS: MIR_insn_code_t = 148;
204pub const MIR_UBGT: MIR_insn_code_t = 149;
205pub const MIR_UBGTS: MIR_insn_code_t = 150;
206pub const MIR_FBGT: MIR_insn_code_t = 151;
207pub const MIR_DBGT: MIR_insn_code_t = 152;
208pub const MIR_LDBGT: MIR_insn_code_t = 153;
209pub const MIR_BGE: MIR_insn_code_t = 154;
210pub const MIR_BGES: MIR_insn_code_t = 155;
211pub const MIR_UBGE: MIR_insn_code_t = 156;
212pub const MIR_UBGES: MIR_insn_code_t = 157;
213pub const MIR_FBGE: MIR_insn_code_t = 158;
214pub const MIR_DBGE: MIR_insn_code_t = 159;
215pub const MIR_LDBGE: MIR_insn_code_t = 160;
216pub const MIR_BO: MIR_insn_code_t = 161;
217pub const MIR_UBO: MIR_insn_code_t = 162;
218pub const MIR_BNO: MIR_insn_code_t = 163;
219pub const MIR_UBNO: MIR_insn_code_t = 164;
220pub const MIR_LADDR: MIR_insn_code_t = 165;
221pub const MIR_JMPI: MIR_insn_code_t = 166;
222pub const MIR_CALL: MIR_insn_code_t = 167;
223pub const MIR_INLINE: MIR_insn_code_t = 168;
224pub const MIR_JCALL: MIR_insn_code_t = 169;
225pub const MIR_SWITCH: MIR_insn_code_t = 170;
226pub const MIR_RET: MIR_insn_code_t = 171;
227pub const MIR_JRET: MIR_insn_code_t = 172;
228pub const MIR_ALLOCA: MIR_insn_code_t = 173;
229pub const MIR_BSTART: MIR_insn_code_t = 174;
230pub const MIR_BEND: MIR_insn_code_t = 175;
231pub const MIR_VA_ARG: MIR_insn_code_t = 176;
232pub const MIR_VA_BLOCK_ARG: MIR_insn_code_t = 177;
233pub const MIR_VA_START: MIR_insn_code_t = 178;
234pub const MIR_VA_END: MIR_insn_code_t = 179;
235pub const MIR_LABEL: MIR_insn_code_t = 180;
236pub const MIR_UNSPEC: MIR_insn_code_t = 181;
237pub const MIR_PRSET: MIR_insn_code_t = 182;
238pub const MIR_PRBEQ: MIR_insn_code_t = 183;
239pub const MIR_PRBNE: MIR_insn_code_t = 184;
240pub const MIR_USE: MIR_insn_code_t = 185;
241pub const MIR_PHI: MIR_insn_code_t = 186;
242pub const MIR_INVALID_INSN: MIR_insn_code_t = 187;
243pub const MIR_INSN_BOUND: MIR_insn_code_t = 188;
244pub type MIR_insn_code_t = ::std::os::raw::c_uint;
245pub const MIR_T_I8: MIR_type_t = 0;
246pub const MIR_T_U8: MIR_type_t = 1;
247pub const MIR_T_I16: MIR_type_t = 2;
248pub const MIR_T_U16: MIR_type_t = 3;
249pub const MIR_T_I32: MIR_type_t = 4;
250pub const MIR_T_U32: MIR_type_t = 5;
251pub const MIR_T_I64: MIR_type_t = 6;
252pub const MIR_T_U64: MIR_type_t = 7;
253pub const MIR_T_F: MIR_type_t = 8;
254pub const MIR_T_D: MIR_type_t = 9;
255pub const MIR_T_LD: MIR_type_t = 10;
256pub const MIR_T_P: MIR_type_t = 11;
257pub const MIR_T_BLK: MIR_type_t = 12;
258pub const MIR_T_RBLK: MIR_type_t = 17;
259pub const MIR_T_UNDEF: MIR_type_t = 18;
260pub const MIR_T_BOUND: MIR_type_t = 19;
261pub type MIR_type_t = ::std::os::raw::c_uint;
262pub type MIR_scale_t = u8;
263pub type MIR_disp_t = i64;
264pub type MIR_reg_t = u32;
265#[repr(C)]
266#[derive(Copy, Clone)]
267pub union MIR_imm_t {
268    pub i: i64,
269    pub u: u64,
270    pub f: f32,
271    pub d: f64,
272    pub ld: f64,
273}
274pub type MIR_alias_t = u32;
275pub type MIR_label_t = *mut MIR_insn;
276pub type MIR_name_t = *const ::std::os::raw::c_char;
277pub const MIR_OP_UNDEF: MIR_op_mode_t = 0;
278pub const MIR_OP_REG: MIR_op_mode_t = 1;
279pub const MIR_OP_VAR: MIR_op_mode_t = 2;
280pub const MIR_OP_INT: MIR_op_mode_t = 3;
281pub const MIR_OP_UINT: MIR_op_mode_t = 4;
282pub const MIR_OP_FLOAT: MIR_op_mode_t = 5;
283pub const MIR_OP_DOUBLE: MIR_op_mode_t = 6;
284pub const MIR_OP_LDOUBLE: MIR_op_mode_t = 7;
285pub const MIR_OP_REF: MIR_op_mode_t = 8;
286pub const MIR_OP_STR: MIR_op_mode_t = 9;
287pub const MIR_OP_MEM: MIR_op_mode_t = 10;
288pub const MIR_OP_VAR_MEM: MIR_op_mode_t = 11;
289pub const MIR_OP_LABEL: MIR_op_mode_t = 12;
290pub const MIR_OP_BOUND: MIR_op_mode_t = 13;
291pub type MIR_op_mode_t = ::std::os::raw::c_uint;
292pub type MIR_item_t = *mut MIR_item;
293#[repr(C)]
294#[derive(Debug, Copy, Clone)]
295pub struct MIR_str {
296    pub len: usize,
297    pub s: *const ::std::os::raw::c_char,
298}
299pub type MIR_str_t = MIR_str;
300pub type MIR_insn_t = *mut MIR_insn;
301#[repr(C)]
302#[derive(Debug, Copy, Clone)]
303pub struct DLIST_LINK_MIR_insn_t {
304    pub prev: MIR_insn_t,
305    pub next: MIR_insn_t,
306}
307#[repr(C)]
308#[derive(Debug, Copy, Clone)]
309pub struct DLIST_MIR_insn_t {
310    pub head: MIR_insn_t,
311    pub tail: MIR_insn_t,
312}
313#[repr(C)]
314#[derive(Debug, Copy, Clone)]
315pub struct MIR_var {
316    pub type_: MIR_type_t,
317    pub name: *const ::std::os::raw::c_char,
318    pub size: usize,
319}
320pub type MIR_var_t = MIR_var;
321#[repr(C)]
322#[derive(Debug, Copy, Clone)]
323pub struct VARR_MIR_var_t {
324    pub els_num: usize,
325    pub size: usize,
326    pub varr: *mut MIR_var_t,
327}
328#[repr(C)]
329#[derive(Debug, Copy, Clone)]
330pub struct MIR_func {
331    pub name: *const ::std::os::raw::c_char,
332    pub func_item: MIR_item_t,
333    pub original_vars_num: usize,
334    pub insns: DLIST_MIR_insn_t,
335    pub original_insns: DLIST_MIR_insn_t,
336    pub nres: u32,
337    pub nargs: u32,
338    pub last_temp_num: u32,
339    pub n_inlines: u32,
340    pub res_types: *mut MIR_type_t,
341    pub vararg_p: ::std::os::raw::c_char,
342    pub expr_p: ::std::os::raw::c_char,
343    pub jret_p: ::std::os::raw::c_char,
344    pub vars: *mut VARR_MIR_var_t,
345    pub global_vars: *mut VARR_MIR_var_t,
346    pub machine_code: *mut ::std::os::raw::c_void,
347    pub call_addr: *mut ::std::os::raw::c_void,
348    pub internal: *mut ::std::os::raw::c_void,
349    pub first_lref: *mut MIR_lref_data,
350}
351pub type MIR_func_t = *mut MIR_func;
352#[repr(C)]
353#[derive(Debug, Copy, Clone)]
354pub struct MIR_proto {
355    pub name: *const ::std::os::raw::c_char,
356    pub nres: u32,
357    pub res_types: *mut MIR_type_t,
358    pub vararg_p: ::std::os::raw::c_char,
359    pub args: *mut VARR_MIR_var_t,
360}
361pub type MIR_proto_t = *mut MIR_proto;
362#[repr(C)]
363#[derive(Copy, Clone)]
364pub struct MIR_data {
365    pub name: *const ::std::os::raw::c_char,
366    pub el_type: MIR_type_t,
367    pub nel: usize,
368    pub u: MIR_data__bindgen_ty_1,
369}
370#[repr(C)]
371#[derive(Copy, Clone)]
372pub union MIR_data__bindgen_ty_1 {
373    pub d: f64,
374    pub els: [u8; 1usize],
375}
376pub type MIR_data_t = *mut MIR_data;
377#[repr(C)]
378#[derive(Debug, Copy, Clone)]
379pub struct MIR_ref_data {
380    pub name: *const ::std::os::raw::c_char,
381    pub ref_item: MIR_item_t,
382    pub disp: i64,
383    pub load_addr: *mut ::std::os::raw::c_void,
384}
385pub type MIR_ref_data_t = *mut MIR_ref_data;
386#[repr(C)]
387#[derive(Debug, Copy, Clone)]
388pub struct MIR_lref_data {
389    pub name: *const ::std::os::raw::c_char,
390    pub label: MIR_label_t,
391    pub label2: MIR_label_t,
392    pub orig_label: MIR_label_t,
393    pub orig_label2: MIR_label_t,
394    pub disp: i64,
395    pub load_addr: *mut ::std::os::raw::c_void,
396    pub next: *mut MIR_lref_data,
397}
398pub type MIR_lref_data_t = *mut MIR_lref_data;
399#[repr(C)]
400#[derive(Debug, Copy, Clone)]
401pub struct MIR_expr_data {
402    pub name: *const ::std::os::raw::c_char,
403    pub expr_item: MIR_item_t,
404    pub load_addr: *mut ::std::os::raw::c_void,
405}
406pub type MIR_expr_data_t = *mut MIR_expr_data;
407#[repr(C)]
408#[derive(Debug, Copy, Clone)]
409pub struct MIR_bss {
410    pub name: *const ::std::os::raw::c_char,
411    pub len: u64,
412}
413pub type MIR_bss_t = *mut MIR_bss;
414pub type MIR_module_t = *mut MIR_module;
415#[repr(C)]
416#[derive(Debug, Copy, Clone)]
417pub struct DLIST_LINK_MIR_item_t {
418    pub prev: MIR_item_t,
419    pub next: MIR_item_t,
420}
421pub const MIR_func_item: MIR_item_type_t = 0;
422pub const MIR_proto_item: MIR_item_type_t = 1;
423pub const MIR_import_item: MIR_item_type_t = 2;
424pub const MIR_export_item: MIR_item_type_t = 3;
425pub const MIR_forward_item: MIR_item_type_t = 4;
426pub const MIR_data_item: MIR_item_type_t = 5;
427pub const MIR_ref_data_item: MIR_item_type_t = 6;
428pub const MIR_lref_data_item: MIR_item_type_t = 7;
429pub const MIR_expr_data_item: MIR_item_type_t = 8;
430pub const MIR_bss_item: MIR_item_type_t = 9;
431pub type MIR_item_type_t = ::std::os::raw::c_uint;
432#[repr(C)]
433#[derive(Copy, Clone)]
434pub struct MIR_item {
435    pub data: *mut ::std::os::raw::c_void,
436    pub module: MIR_module_t,
437    pub item_link: DLIST_LINK_MIR_item_t,
438    pub item_type: MIR_item_type_t,
439    pub ref_def: MIR_item_t,
440    pub addr: *mut ::std::os::raw::c_void,
441    pub export_p: ::std::os::raw::c_char,
442    pub section_head_p: ::std::os::raw::c_char,
443    pub u: MIR_item__bindgen_ty_1,
444}
445#[repr(C)]
446#[derive(Copy, Clone)]
447pub union MIR_item__bindgen_ty_1 {
448    pub func: MIR_func_t,
449    pub proto: MIR_proto_t,
450    pub import_id: MIR_name_t,
451    pub export_id: MIR_name_t,
452    pub forward_id: MIR_name_t,
453    pub data: MIR_data_t,
454    pub ref_data: MIR_ref_data_t,
455    pub lref_data: MIR_lref_data_t,
456    pub expr_data: MIR_expr_data_t,
457    pub bss: MIR_bss_t,
458}
459#[repr(C)]
460#[derive(Debug, Copy, Clone)]
461pub struct DLIST_MIR_item_t {
462    pub head: MIR_item_t,
463    pub tail: MIR_item_t,
464}
465#[repr(C)]
466#[derive(Debug, Copy, Clone)]
467pub struct DLIST_LINK_MIR_module_t {
468    pub prev: MIR_module_t,
469    pub next: MIR_module_t,
470}
471#[repr(C)]
472#[derive(Debug, Copy, Clone)]
473pub struct MIR_module {
474    pub data: *mut ::std::os::raw::c_void,
475    pub name: *const ::std::os::raw::c_char,
476    pub items: DLIST_MIR_item_t,
477    pub module_link: DLIST_LINK_MIR_module_t,
478    pub last_temp_item_num: u32,
479}
480#[repr(C)]
481#[derive(Debug, Copy, Clone)]
482pub struct DLIST_MIR_module_t {
483    pub head: MIR_module_t,
484    pub tail: MIR_module_t,
485}
486#[repr(C)]
487#[derive(Debug, Copy, Clone)]
488pub struct MIR_context {
489    _unused: [u8; 0],
490}
491pub type MIR_context_t = *mut MIR_context;
492#[repr(C)]
493#[derive(Copy, Clone)]
494pub union MIR_val_t {
495    pub ic: MIR_insn_code_t,
496    pub a: *mut ::std::os::raw::c_void,
497    pub i: i64,
498    pub u: u64,
499    pub f: f32,
500    pub d: f64,
501    pub ld: f64,
502}
503unsafe extern "C-unwind" {
504    pub fn _MIR_get_api_version() -> f64;
505    pub fn _MIR_init() -> MIR_context_t;
506    pub fn MIR_finish(ctx: MIR_context_t);
507    pub fn MIR_new_module(ctx: MIR_context_t, name: *const ::std::os::raw::c_char) -> MIR_module_t;
508    pub fn MIR_get_module_list(ctx: MIR_context_t) -> *mut DLIST_MIR_module_t;
509    pub fn MIR_new_import(ctx: MIR_context_t, name: *const ::std::os::raw::c_char) -> MIR_item_t;
510    pub fn MIR_new_export(ctx: MIR_context_t, name: *const ::std::os::raw::c_char) -> MIR_item_t;
511    pub fn MIR_new_forward(ctx: MIR_context_t, name: *const ::std::os::raw::c_char) -> MIR_item_t;
512    pub fn MIR_new_bss(
513        ctx: MIR_context_t,
514        name: *const ::std::os::raw::c_char,
515        len: usize,
516    ) -> MIR_item_t;
517    pub fn MIR_new_data(
518        ctx: MIR_context_t,
519        name: *const ::std::os::raw::c_char,
520        el_type: MIR_type_t,
521        nel: usize,
522        els: *const ::std::os::raw::c_void,
523    ) -> MIR_item_t;
524    pub fn MIR_new_string_data(
525        ctx: MIR_context_t,
526        name: *const ::std::os::raw::c_char,
527        str_: MIR_str_t,
528    ) -> MIR_item_t;
529    pub fn MIR_new_ref_data(
530        ctx: MIR_context_t,
531        name: *const ::std::os::raw::c_char,
532        item: MIR_item_t,
533        disp: i64,
534    ) -> MIR_item_t;
535    pub fn MIR_new_lref_data(
536        ctx: MIR_context_t,
537        name: *const ::std::os::raw::c_char,
538        label: MIR_label_t,
539        label2: MIR_label_t,
540        disp: i64,
541    ) -> MIR_item_t;
542    pub fn MIR_new_expr_data(
543        ctx: MIR_context_t,
544        name: *const ::std::os::raw::c_char,
545        expr_item: MIR_item_t,
546    ) -> MIR_item_t;
547    pub fn MIR_new_proto_arr(
548        ctx: MIR_context_t,
549        name: *const ::std::os::raw::c_char,
550        nres: usize,
551        res_types: *mut MIR_type_t,
552        nargs: usize,
553        vars: *mut MIR_var_t,
554    ) -> MIR_item_t;
555    pub fn MIR_new_proto(
556        ctx: MIR_context_t,
557        name: *const ::std::os::raw::c_char,
558        nres: usize,
559        res_types: *mut MIR_type_t,
560        nargs: usize,
561        ...
562    ) -> MIR_item_t;
563    pub fn MIR_new_vararg_proto_arr(
564        ctx: MIR_context_t,
565        name: *const ::std::os::raw::c_char,
566        nres: usize,
567        res_types: *mut MIR_type_t,
568        nargs: usize,
569        vars: *mut MIR_var_t,
570    ) -> MIR_item_t;
571    pub fn MIR_new_vararg_proto(
572        ctx: MIR_context_t,
573        name: *const ::std::os::raw::c_char,
574        nres: usize,
575        res_types: *mut MIR_type_t,
576        nargs: usize,
577        ...
578    ) -> MIR_item_t;
579    pub fn MIR_new_func_arr(
580        ctx: MIR_context_t,
581        name: *const ::std::os::raw::c_char,
582        nres: usize,
583        res_types: *mut MIR_type_t,
584        nargs: usize,
585        vars: *mut MIR_var_t,
586    ) -> MIR_item_t;
587    pub fn MIR_new_func(
588        ctx: MIR_context_t,
589        name: *const ::std::os::raw::c_char,
590        nres: usize,
591        res_types: *mut MIR_type_t,
592        nargs: usize,
593        ...
594    ) -> MIR_item_t;
595    pub fn MIR_new_vararg_func_arr(
596        ctx: MIR_context_t,
597        name: *const ::std::os::raw::c_char,
598        nres: usize,
599        res_types: *mut MIR_type_t,
600        nargs: usize,
601        vars: *mut MIR_var_t,
602    ) -> MIR_item_t;
603    pub fn MIR_new_vararg_func(
604        ctx: MIR_context_t,
605        name: *const ::std::os::raw::c_char,
606        nres: usize,
607        res_types: *mut MIR_type_t,
608        nargs: usize,
609        ...
610    ) -> MIR_item_t;
611    pub fn MIR_item_name(ctx: MIR_context_t, item: MIR_item_t) -> *const ::std::os::raw::c_char;
612    pub fn MIR_get_item_func(ctx: MIR_context_t, item: MIR_item_t) -> MIR_func_t;
613    pub fn MIR_new_func_reg(
614        ctx: MIR_context_t,
615        func: MIR_func_t,
616        type_: MIR_type_t,
617        name: *const ::std::os::raw::c_char,
618    ) -> MIR_reg_t;
619    pub fn MIR_new_global_func_reg(
620        ctx: MIR_context_t,
621        func: MIR_func_t,
622        type_: MIR_type_t,
623        name: *const ::std::os::raw::c_char,
624        hard_reg_name: *const ::std::os::raw::c_char,
625    ) -> MIR_reg_t;
626    pub fn MIR_finish_func(ctx: MIR_context_t);
627    pub fn MIR_finish_module(ctx: MIR_context_t);
628    pub fn MIR_get_error_func(ctx: MIR_context_t) -> MIR_error_func_t;
629    pub fn MIR_set_error_func(ctx: MIR_context_t, func: MIR_error_func_t);
630    pub fn MIR_get_func_redef_permission_p(ctx: MIR_context_t) -> ::std::os::raw::c_int;
631    pub fn MIR_set_func_redef_permission(ctx: MIR_context_t, flag_p: ::std::os::raw::c_int);
632    pub fn MIR_new_insn_arr(
633        ctx: MIR_context_t,
634        code: MIR_insn_code_t,
635        nops: usize,
636        ops: *mut MIR_op_t,
637    ) -> MIR_insn_t;
638    pub fn MIR_new_insn(ctx: MIR_context_t, code: MIR_insn_code_t, ...) -> MIR_insn_t;
639    pub fn MIR_new_call_insn(ctx: MIR_context_t, nops: usize, ...) -> MIR_insn_t;
640    pub fn MIR_new_jcall_insn(ctx: MIR_context_t, nops: usize, ...) -> MIR_insn_t;
641    pub fn MIR_new_ret_insn(ctx: MIR_context_t, nops: usize, ...) -> MIR_insn_t;
642    pub fn MIR_copy_insn(ctx: MIR_context_t, insn: MIR_insn_t) -> MIR_insn_t;
643    pub fn MIR_insn_name(
644        ctx: MIR_context_t,
645        code: MIR_insn_code_t,
646    ) -> *const ::std::os::raw::c_char;
647    pub fn MIR_insn_nops(ctx: MIR_context_t, insn: MIR_insn_t) -> usize;
648    pub fn MIR_insn_op_mode(
649        ctx: MIR_context_t,
650        insn: MIR_insn_t,
651        nop: usize,
652        out_p: *mut ::std::os::raw::c_int,
653    ) -> MIR_op_mode_t;
654    pub fn MIR_new_label(ctx: MIR_context_t) -> MIR_insn_t;
655    pub fn MIR_reg(
656        ctx: MIR_context_t,
657        reg_name: *const ::std::os::raw::c_char,
658        func: MIR_func_t,
659    ) -> MIR_reg_t;
660    pub fn MIR_reg_type(ctx: MIR_context_t, reg: MIR_reg_t, func: MIR_func_t) -> MIR_type_t;
661    pub fn MIR_reg_name(
662        ctx: MIR_context_t,
663        reg: MIR_reg_t,
664        func: MIR_func_t,
665    ) -> *const ::std::os::raw::c_char;
666    pub fn MIR_reg_hard_reg_name(
667        ctx: MIR_context_t,
668        reg: MIR_reg_t,
669        func: MIR_func_t,
670    ) -> *const ::std::os::raw::c_char;
671    pub fn MIR_alias_name(ctx: MIR_context_t, alias: MIR_alias_t) -> *const ::std::os::raw::c_char;
672    pub fn MIR_alias(ctx: MIR_context_t, name: *const ::std::os::raw::c_char) -> MIR_alias_t;
673    pub fn MIR_new_reg_op(ctx: MIR_context_t, reg: MIR_reg_t) -> MIR_op_t;
674    pub fn MIR_new_int_op(ctx: MIR_context_t, v: i64) -> MIR_op_t;
675    pub fn MIR_new_uint_op(ctx: MIR_context_t, v: u64) -> MIR_op_t;
676    pub fn MIR_new_float_op(ctx: MIR_context_t, v: f32) -> MIR_op_t;
677    pub fn MIR_new_double_op(ctx: MIR_context_t, v: f64) -> MIR_op_t;
678    pub fn MIR_new_ldouble_op(ctx: MIR_context_t, v: f64) -> MIR_op_t;
679    pub fn MIR_new_ref_op(ctx: MIR_context_t, item: MIR_item_t) -> MIR_op_t;
680    pub fn MIR_new_str_op(ctx: MIR_context_t, str_: MIR_str_t) -> MIR_op_t;
681    pub fn MIR_new_mem_op(
682        ctx: MIR_context_t,
683        type_: MIR_type_t,
684        disp: MIR_disp_t,
685        base: MIR_reg_t,
686        index: MIR_reg_t,
687        scale: MIR_scale_t,
688    ) -> MIR_op_t;
689    pub fn MIR_new_alias_mem_op(
690        ctx: MIR_context_t,
691        type_: MIR_type_t,
692        disp: MIR_disp_t,
693        base: MIR_reg_t,
694        index: MIR_reg_t,
695        scale: MIR_scale_t,
696        alias: MIR_alias_t,
697        noalias: MIR_alias_t,
698    ) -> MIR_op_t;
699    pub fn MIR_new_label_op(ctx: MIR_context_t, label: MIR_label_t) -> MIR_op_t;
700    pub fn MIR_op_eq_p(ctx: MIR_context_t, op1: MIR_op_t, op2: MIR_op_t) -> ::std::os::raw::c_int;
701    pub fn MIR_op_hash_step(ctx: MIR_context_t, h: htab_hash_t, op: MIR_op_t) -> htab_hash_t;
702    pub fn MIR_append_insn(ctx: MIR_context_t, func: MIR_item_t, insn: MIR_insn_t);
703    pub fn MIR_prepend_insn(ctx: MIR_context_t, func: MIR_item_t, insn: MIR_insn_t);
704    pub fn MIR_insert_insn_after(
705        ctx: MIR_context_t,
706        func: MIR_item_t,
707        after: MIR_insn_t,
708        insn: MIR_insn_t,
709    );
710    pub fn MIR_insert_insn_before(
711        ctx: MIR_context_t,
712        func: MIR_item_t,
713        before: MIR_insn_t,
714        insn: MIR_insn_t,
715    );
716    pub fn MIR_remove_insn(ctx: MIR_context_t, func: MIR_item_t, insn: MIR_insn_t);
717    pub fn MIR_change_module_ctx(old_ctx: MIR_context_t, m: MIR_module_t, new_ctx: MIR_context_t);
718    pub fn MIR_reverse_branch_code(code: MIR_insn_code_t) -> MIR_insn_code_t;
719    pub fn MIR_type_str(ctx: MIR_context_t, tp: MIR_type_t) -> *const ::std::os::raw::c_char;
720    pub fn MIR_output_str(ctx: MIR_context_t, f: *mut FILE, str_: MIR_str_t);
721    pub fn MIR_output_op(ctx: MIR_context_t, f: *mut FILE, op: MIR_op_t, func: MIR_func_t);
722    pub fn MIR_output_insn(
723        ctx: MIR_context_t,
724        f: *mut FILE,
725        insn: MIR_insn_t,
726        func: MIR_func_t,
727        newline_p: ::std::os::raw::c_int,
728    );
729    pub fn MIR_output_item(ctx: MIR_context_t, f: *mut FILE, item: MIR_item_t);
730    pub fn MIR_output_module(ctx: MIR_context_t, f: *mut FILE, module: MIR_module_t);
731    pub fn MIR_output(ctx: MIR_context_t, f: *mut FILE);
732    pub fn MIR_write(ctx: MIR_context_t, f: *mut FILE);
733    pub fn MIR_write_module(ctx: MIR_context_t, f: *mut FILE, module: MIR_module_t);
734    pub fn MIR_read(ctx: MIR_context_t, f: *mut FILE);
735    pub fn MIR_write_with_func(
736        ctx: MIR_context_t,
737        writer_func: ::std::option::Option<
738            unsafe extern "C-unwind" fn(
739                arg1: *mut ::std::os::raw::c_void,
740                arg2: u8,
741            ) -> ::std::os::raw::c_int,
742        >,
743        writer_arg: *mut ::std::os::raw::c_void,
744    );
745    pub fn MIR_write_module_with_func(
746        ctx: MIR_context_t,
747        writer_func: ::std::option::Option<
748            unsafe extern "C-unwind" fn(
749                arg1: *mut ::std::os::raw::c_void,
750                arg2: u8,
751            ) -> ::std::os::raw::c_int,
752        >,
753        module: MIR_module_t,
754        writer_arg: *mut ::std::os::raw::c_void,
755    );
756    pub fn MIR_read_with_func(
757        ctx: MIR_context_t,
758        reader_func: ::std::option::Option<
759            unsafe extern "C-unwind" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,
760        >,
761        reader_arg: *mut ::std::os::raw::c_void,
762    );
763    pub fn MIR_scan_string(ctx: MIR_context_t, str_: *const ::std::os::raw::c_char);
764    pub fn MIR_get_global_item(
765        ctx: MIR_context_t,
766        name: *const ::std::os::raw::c_char,
767    ) -> MIR_item_t;
768    pub fn MIR_load_module(ctx: MIR_context_t, m: MIR_module_t);
769    pub fn MIR_load_external(
770        ctx: MIR_context_t,
771        name: *const ::std::os::raw::c_char,
772        addr: *mut ::std::os::raw::c_void,
773    );
774    pub fn MIR_link(
775        ctx: MIR_context_t,
776        set_interface: ::std::option::Option<
777            unsafe extern "C-unwind" fn(ctx: MIR_context_t, item: MIR_item_t),
778        >,
779        import_resolver: ::std::option::Option<
780            unsafe extern "C-unwind" fn(
781                arg1: *mut ::std::os::raw::c_void,
782                arg2: *const ::std::os::raw::c_char,
783            ) -> *mut ::std::os::raw::c_void,
784        >,
785        resolver_arg: *mut ::std::os::raw::c_void,
786    );
787    pub fn MIR_interp(
788        ctx: MIR_context_t,
789        func_item: MIR_item_t,
790        results: *mut MIR_val_t,
791        nargs: usize,
792        ...
793    );
794    pub fn MIR_interp_arr(
795        ctx: MIR_context_t,
796        func_item: MIR_item_t,
797        results: *mut MIR_val_t,
798        nargs: usize,
799        vals: *mut MIR_val_t,
800    );
801    pub fn MIR_set_interp_interface(ctx: MIR_context_t, func_item: MIR_item_t);
802}