use libc::FILE;
use super::{MIR_op_t, MIR_insn};
pub const MIR_API_VERSION: f64 = -1.0;
pub const MIR_NO_IO: u32 = 0;
pub const MIR_NO_SCAN: u32 = 0;
pub const MIR_BLK_NUM: u32 = 5;
pub const MIR_PTR32: u32 = 0;
pub const MIR_PTR64: u32 = 1;
pub const MIR_MAX_SCALE: u32 = 255;
pub const MIR_MAX_REG_NUM: u32 = 4294967295;
pub const MIR_NON_VAR: u32 = 4294967295;
pub type htab_hash_t = ::std::os::raw::c_uint;
pub const MIR_no_error: MIR_error_type = 0;
pub const MIR_syntax_error: MIR_error_type = 1;
pub const MIR_binary_io_error: MIR_error_type = 2;
pub const MIR_alloc_error: MIR_error_type = 3;
pub const MIR_finish_error: MIR_error_type = 4;
pub const MIR_no_module_error: MIR_error_type = 5;
pub const MIR_nested_module_error: MIR_error_type = 6;
pub const MIR_no_func_error: MIR_error_type = 7;
pub const MIR_func_error: MIR_error_type = 8;
pub const MIR_vararg_func_error: MIR_error_type = 9;
pub const MIR_nested_func_error: MIR_error_type = 10;
pub const MIR_wrong_param_value_error: MIR_error_type = 11;
pub const MIR_hard_reg_error: MIR_error_type = 12;
pub const MIR_reserved_name_error: MIR_error_type = 13;
pub const MIR_import_export_error: MIR_error_type = 14;
pub const MIR_undeclared_func_reg_error: MIR_error_type = 15;
pub const MIR_repeated_decl_error: MIR_error_type = 16;
pub const MIR_reg_type_error: MIR_error_type = 17;
pub const MIR_wrong_type_error: MIR_error_type = 18;
pub const MIR_unique_reg_error: MIR_error_type = 19;
pub const MIR_undeclared_op_ref_error: MIR_error_type = 20;
pub const MIR_ops_num_error: MIR_error_type = 21;
pub const MIR_call_op_error: MIR_error_type = 22;
pub const MIR_unspec_op_error: MIR_error_type = 23;
pub const MIR_wrong_lref_error: MIR_error_type = 24;
pub const MIR_ret_error: MIR_error_type = 25;
pub const MIR_op_mode_error: MIR_error_type = 26;
pub const MIR_out_op_error: MIR_error_type = 27;
pub const MIR_invalid_insn_error: MIR_error_type = 28;
pub const MIR_ctx_change_error: MIR_error_type = 29;
pub type MIR_error_type = ::std::os::raw::c_uint;
pub use self::MIR_error_type as MIR_error_type_t;
pub type MIR_error_func_t = ::std::option::Option<
unsafe extern "C-unwind" fn(
error_type: MIR_error_type_t,
format: *const ::std::os::raw::c_char,
...
) -> !,
>;
pub const MIR_MOV: MIR_insn_code_t = 0;
pub const MIR_FMOV: MIR_insn_code_t = 1;
pub const MIR_DMOV: MIR_insn_code_t = 2;
pub const MIR_LDMOV: MIR_insn_code_t = 3;
pub const MIR_EXT8: MIR_insn_code_t = 4;
pub const MIR_EXT16: MIR_insn_code_t = 5;
pub const MIR_EXT32: MIR_insn_code_t = 6;
pub const MIR_UEXT8: MIR_insn_code_t = 7;
pub const MIR_UEXT16: MIR_insn_code_t = 8;
pub const MIR_UEXT32: MIR_insn_code_t = 9;
pub const MIR_I2F: MIR_insn_code_t = 10;
pub const MIR_I2D: MIR_insn_code_t = 11;
pub const MIR_I2LD: MIR_insn_code_t = 12;
pub const MIR_UI2F: MIR_insn_code_t = 13;
pub const MIR_UI2D: MIR_insn_code_t = 14;
pub const MIR_UI2LD: MIR_insn_code_t = 15;
pub const MIR_F2I: MIR_insn_code_t = 16;
pub const MIR_D2I: MIR_insn_code_t = 17;
pub const MIR_LD2I: MIR_insn_code_t = 18;
pub const MIR_F2D: MIR_insn_code_t = 19;
pub const MIR_F2LD: MIR_insn_code_t = 20;
pub const MIR_D2F: MIR_insn_code_t = 21;
pub const MIR_D2LD: MIR_insn_code_t = 22;
pub const MIR_LD2F: MIR_insn_code_t = 23;
pub const MIR_LD2D: MIR_insn_code_t = 24;
pub const MIR_NEG: MIR_insn_code_t = 25;
pub const MIR_NEGS: MIR_insn_code_t = 26;
pub const MIR_FNEG: MIR_insn_code_t = 27;
pub const MIR_DNEG: MIR_insn_code_t = 28;
pub const MIR_LDNEG: MIR_insn_code_t = 29;
pub const MIR_ADDR: MIR_insn_code_t = 30;
pub const MIR_ADDR8: MIR_insn_code_t = 31;
pub const MIR_ADDR16: MIR_insn_code_t = 32;
pub const MIR_ADDR32: MIR_insn_code_t = 33;
pub const MIR_ADD: MIR_insn_code_t = 34;
pub const MIR_ADDS: MIR_insn_code_t = 35;
pub const MIR_FADD: MIR_insn_code_t = 36;
pub const MIR_DADD: MIR_insn_code_t = 37;
pub const MIR_LDADD: MIR_insn_code_t = 38;
pub const MIR_SUB: MIR_insn_code_t = 39;
pub const MIR_SUBS: MIR_insn_code_t = 40;
pub const MIR_FSUB: MIR_insn_code_t = 41;
pub const MIR_DSUB: MIR_insn_code_t = 42;
pub const MIR_LDSUB: MIR_insn_code_t = 43;
pub const MIR_MUL: MIR_insn_code_t = 44;
pub const MIR_MULS: MIR_insn_code_t = 45;
pub const MIR_FMUL: MIR_insn_code_t = 46;
pub const MIR_DMUL: MIR_insn_code_t = 47;
pub const MIR_LDMUL: MIR_insn_code_t = 48;
pub const MIR_DIV: MIR_insn_code_t = 49;
pub const MIR_DIVS: MIR_insn_code_t = 50;
pub const MIR_UDIV: MIR_insn_code_t = 51;
pub const MIR_UDIVS: MIR_insn_code_t = 52;
pub const MIR_FDIV: MIR_insn_code_t = 53;
pub const MIR_DDIV: MIR_insn_code_t = 54;
pub const MIR_LDDIV: MIR_insn_code_t = 55;
pub const MIR_MOD: MIR_insn_code_t = 56;
pub const MIR_MODS: MIR_insn_code_t = 57;
pub const MIR_UMOD: MIR_insn_code_t = 58;
pub const MIR_UMODS: MIR_insn_code_t = 59;
pub const MIR_AND: MIR_insn_code_t = 60;
pub const MIR_ANDS: MIR_insn_code_t = 61;
pub const MIR_OR: MIR_insn_code_t = 62;
pub const MIR_ORS: MIR_insn_code_t = 63;
pub const MIR_XOR: MIR_insn_code_t = 64;
pub const MIR_XORS: MIR_insn_code_t = 65;
pub const MIR_LSH: MIR_insn_code_t = 66;
pub const MIR_LSHS: MIR_insn_code_t = 67;
pub const MIR_RSH: MIR_insn_code_t = 68;
pub const MIR_RSHS: MIR_insn_code_t = 69;
pub const MIR_URSH: MIR_insn_code_t = 70;
pub const MIR_URSHS: MIR_insn_code_t = 71;
pub const MIR_EQ: MIR_insn_code_t = 72;
pub const MIR_EQS: MIR_insn_code_t = 73;
pub const MIR_FEQ: MIR_insn_code_t = 74;
pub const MIR_DEQ: MIR_insn_code_t = 75;
pub const MIR_LDEQ: MIR_insn_code_t = 76;
pub const MIR_NE: MIR_insn_code_t = 77;
pub const MIR_NES: MIR_insn_code_t = 78;
pub const MIR_FNE: MIR_insn_code_t = 79;
pub const MIR_DNE: MIR_insn_code_t = 80;
pub const MIR_LDNE: MIR_insn_code_t = 81;
pub const MIR_LT: MIR_insn_code_t = 82;
pub const MIR_LTS: MIR_insn_code_t = 83;
pub const MIR_ULT: MIR_insn_code_t = 84;
pub const MIR_ULTS: MIR_insn_code_t = 85;
pub const MIR_FLT: MIR_insn_code_t = 86;
pub const MIR_DLT: MIR_insn_code_t = 87;
pub const MIR_LDLT: MIR_insn_code_t = 88;
pub const MIR_LE: MIR_insn_code_t = 89;
pub const MIR_LES: MIR_insn_code_t = 90;
pub const MIR_ULE: MIR_insn_code_t = 91;
pub const MIR_ULES: MIR_insn_code_t = 92;
pub const MIR_FLE: MIR_insn_code_t = 93;
pub const MIR_DLE: MIR_insn_code_t = 94;
pub const MIR_LDLE: MIR_insn_code_t = 95;
pub const MIR_GT: MIR_insn_code_t = 96;
pub const MIR_GTS: MIR_insn_code_t = 97;
pub const MIR_UGT: MIR_insn_code_t = 98;
pub const MIR_UGTS: MIR_insn_code_t = 99;
pub const MIR_FGT: MIR_insn_code_t = 100;
pub const MIR_DGT: MIR_insn_code_t = 101;
pub const MIR_LDGT: MIR_insn_code_t = 102;
pub const MIR_GE: MIR_insn_code_t = 103;
pub const MIR_GES: MIR_insn_code_t = 104;
pub const MIR_UGE: MIR_insn_code_t = 105;
pub const MIR_UGES: MIR_insn_code_t = 106;
pub const MIR_FGE: MIR_insn_code_t = 107;
pub const MIR_DGE: MIR_insn_code_t = 108;
pub const MIR_LDGE: MIR_insn_code_t = 109;
pub const MIR_ADDO: MIR_insn_code_t = 110;
pub const MIR_ADDOS: MIR_insn_code_t = 111;
pub const MIR_SUBO: MIR_insn_code_t = 112;
pub const MIR_SUBOS: MIR_insn_code_t = 113;
pub const MIR_MULO: MIR_insn_code_t = 114;
pub const MIR_MULOS: MIR_insn_code_t = 115;
pub const MIR_UMULO: MIR_insn_code_t = 116;
pub const MIR_UMULOS: MIR_insn_code_t = 117;
pub const MIR_JMP: MIR_insn_code_t = 118;
pub const MIR_BT: MIR_insn_code_t = 119;
pub const MIR_BTS: MIR_insn_code_t = 120;
pub const MIR_BF: MIR_insn_code_t = 121;
pub const MIR_BFS: MIR_insn_code_t = 122;
pub const MIR_BEQ: MIR_insn_code_t = 123;
pub const MIR_BEQS: MIR_insn_code_t = 124;
pub const MIR_FBEQ: MIR_insn_code_t = 125;
pub const MIR_DBEQ: MIR_insn_code_t = 126;
pub const MIR_LDBEQ: MIR_insn_code_t = 127;
pub const MIR_BNE: MIR_insn_code_t = 128;
pub const MIR_BNES: MIR_insn_code_t = 129;
pub const MIR_FBNE: MIR_insn_code_t = 130;
pub const MIR_DBNE: MIR_insn_code_t = 131;
pub const MIR_LDBNE: MIR_insn_code_t = 132;
pub const MIR_BLT: MIR_insn_code_t = 133;
pub const MIR_BLTS: MIR_insn_code_t = 134;
pub const MIR_UBLT: MIR_insn_code_t = 135;
pub const MIR_UBLTS: MIR_insn_code_t = 136;
pub const MIR_FBLT: MIR_insn_code_t = 137;
pub const MIR_DBLT: MIR_insn_code_t = 138;
pub const MIR_LDBLT: MIR_insn_code_t = 139;
pub const MIR_BLE: MIR_insn_code_t = 140;
pub const MIR_BLES: MIR_insn_code_t = 141;
pub const MIR_UBLE: MIR_insn_code_t = 142;
pub const MIR_UBLES: MIR_insn_code_t = 143;
pub const MIR_FBLE: MIR_insn_code_t = 144;
pub const MIR_DBLE: MIR_insn_code_t = 145;
pub const MIR_LDBLE: MIR_insn_code_t = 146;
pub const MIR_BGT: MIR_insn_code_t = 147;
pub const MIR_BGTS: MIR_insn_code_t = 148;
pub const MIR_UBGT: MIR_insn_code_t = 149;
pub const MIR_UBGTS: MIR_insn_code_t = 150;
pub const MIR_FBGT: MIR_insn_code_t = 151;
pub const MIR_DBGT: MIR_insn_code_t = 152;
pub const MIR_LDBGT: MIR_insn_code_t = 153;
pub const MIR_BGE: MIR_insn_code_t = 154;
pub const MIR_BGES: MIR_insn_code_t = 155;
pub const MIR_UBGE: MIR_insn_code_t = 156;
pub const MIR_UBGES: MIR_insn_code_t = 157;
pub const MIR_FBGE: MIR_insn_code_t = 158;
pub const MIR_DBGE: MIR_insn_code_t = 159;
pub const MIR_LDBGE: MIR_insn_code_t = 160;
pub const MIR_BO: MIR_insn_code_t = 161;
pub const MIR_UBO: MIR_insn_code_t = 162;
pub const MIR_BNO: MIR_insn_code_t = 163;
pub const MIR_UBNO: MIR_insn_code_t = 164;
pub const MIR_LADDR: MIR_insn_code_t = 165;
pub const MIR_JMPI: MIR_insn_code_t = 166;
pub const MIR_CALL: MIR_insn_code_t = 167;
pub const MIR_INLINE: MIR_insn_code_t = 168;
pub const MIR_JCALL: MIR_insn_code_t = 169;
pub const MIR_SWITCH: MIR_insn_code_t = 170;
pub const MIR_RET: MIR_insn_code_t = 171;
pub const MIR_JRET: MIR_insn_code_t = 172;
pub const MIR_ALLOCA: MIR_insn_code_t = 173;
pub const MIR_BSTART: MIR_insn_code_t = 174;
pub const MIR_BEND: MIR_insn_code_t = 175;
pub const MIR_VA_ARG: MIR_insn_code_t = 176;
pub const MIR_VA_BLOCK_ARG: MIR_insn_code_t = 177;
pub const MIR_VA_START: MIR_insn_code_t = 178;
pub const MIR_VA_END: MIR_insn_code_t = 179;
pub const MIR_LABEL: MIR_insn_code_t = 180;
pub const MIR_UNSPEC: MIR_insn_code_t = 181;
pub const MIR_PRSET: MIR_insn_code_t = 182;
pub const MIR_PRBEQ: MIR_insn_code_t = 183;
pub const MIR_PRBNE: MIR_insn_code_t = 184;
pub const MIR_USE: MIR_insn_code_t = 185;
pub const MIR_PHI: MIR_insn_code_t = 186;
pub const MIR_INVALID_INSN: MIR_insn_code_t = 187;
pub const MIR_INSN_BOUND: MIR_insn_code_t = 188;
pub type MIR_insn_code_t = ::std::os::raw::c_uint;
pub const MIR_T_I8: MIR_type_t = 0;
pub const MIR_T_U8: MIR_type_t = 1;
pub const MIR_T_I16: MIR_type_t = 2;
pub const MIR_T_U16: MIR_type_t = 3;
pub const MIR_T_I32: MIR_type_t = 4;
pub const MIR_T_U32: MIR_type_t = 5;
pub const MIR_T_I64: MIR_type_t = 6;
pub const MIR_T_U64: MIR_type_t = 7;
pub const MIR_T_F: MIR_type_t = 8;
pub const MIR_T_D: MIR_type_t = 9;
pub const MIR_T_LD: MIR_type_t = 10;
pub const MIR_T_P: MIR_type_t = 11;
pub const MIR_T_BLK: MIR_type_t = 12;
pub const MIR_T_RBLK: MIR_type_t = 17;
pub const MIR_T_UNDEF: MIR_type_t = 18;
pub const MIR_T_BOUND: MIR_type_t = 19;
pub type MIR_type_t = ::std::os::raw::c_uint;
pub type MIR_scale_t = u8;
pub type MIR_disp_t = i64;
pub type MIR_reg_t = u32;
#[repr(C)]
#[derive(Copy, Clone)]
pub union MIR_imm_t {
pub i: i64,
pub u: u64,
pub f: f32,
pub d: f64,
pub ld: f64,
}
pub type MIR_alias_t = u32;
pub type MIR_label_t = *mut MIR_insn;
pub type MIR_name_t = *const ::std::os::raw::c_char;
pub const MIR_OP_UNDEF: MIR_op_mode_t = 0;
pub const MIR_OP_REG: MIR_op_mode_t = 1;
pub const MIR_OP_VAR: MIR_op_mode_t = 2;
pub const MIR_OP_INT: MIR_op_mode_t = 3;
pub const MIR_OP_UINT: MIR_op_mode_t = 4;
pub const MIR_OP_FLOAT: MIR_op_mode_t = 5;
pub const MIR_OP_DOUBLE: MIR_op_mode_t = 6;
pub const MIR_OP_LDOUBLE: MIR_op_mode_t = 7;
pub const MIR_OP_REF: MIR_op_mode_t = 8;
pub const MIR_OP_STR: MIR_op_mode_t = 9;
pub const MIR_OP_MEM: MIR_op_mode_t = 10;
pub const MIR_OP_VAR_MEM: MIR_op_mode_t = 11;
pub const MIR_OP_LABEL: MIR_op_mode_t = 12;
pub const MIR_OP_BOUND: MIR_op_mode_t = 13;
pub type MIR_op_mode_t = ::std::os::raw::c_uint;
pub type MIR_item_t = *mut MIR_item;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct MIR_str {
pub len: usize,
pub s: *const ::std::os::raw::c_char,
}
pub type MIR_str_t = MIR_str;
pub type MIR_insn_t = *mut MIR_insn;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct DLIST_LINK_MIR_insn_t {
pub prev: MIR_insn_t,
pub next: MIR_insn_t,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct DLIST_MIR_insn_t {
pub head: MIR_insn_t,
pub tail: MIR_insn_t,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct MIR_var {
pub type_: MIR_type_t,
pub name: *const ::std::os::raw::c_char,
pub size: usize,
}
pub type MIR_var_t = MIR_var;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct VARR_MIR_var_t {
pub els_num: usize,
pub size: usize,
pub varr: *mut MIR_var_t,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct MIR_func {
pub name: *const ::std::os::raw::c_char,
pub func_item: MIR_item_t,
pub original_vars_num: usize,
pub insns: DLIST_MIR_insn_t,
pub original_insns: DLIST_MIR_insn_t,
pub nres: u32,
pub nargs: u32,
pub last_temp_num: u32,
pub n_inlines: u32,
pub res_types: *mut MIR_type_t,
pub vararg_p: ::std::os::raw::c_char,
pub expr_p: ::std::os::raw::c_char,
pub jret_p: ::std::os::raw::c_char,
pub vars: *mut VARR_MIR_var_t,
pub global_vars: *mut VARR_MIR_var_t,
pub machine_code: *mut ::std::os::raw::c_void,
pub call_addr: *mut ::std::os::raw::c_void,
pub internal: *mut ::std::os::raw::c_void,
pub first_lref: *mut MIR_lref_data,
}
pub type MIR_func_t = *mut MIR_func;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct MIR_proto {
pub name: *const ::std::os::raw::c_char,
pub nres: u32,
pub res_types: *mut MIR_type_t,
pub vararg_p: ::std::os::raw::c_char,
pub args: *mut VARR_MIR_var_t,
}
pub type MIR_proto_t = *mut MIR_proto;
#[repr(C)]
#[derive(Copy, Clone)]
pub struct MIR_data {
pub name: *const ::std::os::raw::c_char,
pub el_type: MIR_type_t,
pub nel: usize,
pub u: MIR_data__bindgen_ty_1,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union MIR_data__bindgen_ty_1 {
pub d: f64,
pub els: [u8; 1usize],
}
pub type MIR_data_t = *mut MIR_data;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct MIR_ref_data {
pub name: *const ::std::os::raw::c_char,
pub ref_item: MIR_item_t,
pub disp: i64,
pub load_addr: *mut ::std::os::raw::c_void,
}
pub type MIR_ref_data_t = *mut MIR_ref_data;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct MIR_lref_data {
pub name: *const ::std::os::raw::c_char,
pub label: MIR_label_t,
pub label2: MIR_label_t,
pub orig_label: MIR_label_t,
pub orig_label2: MIR_label_t,
pub disp: i64,
pub load_addr: *mut ::std::os::raw::c_void,
pub next: *mut MIR_lref_data,
}
pub type MIR_lref_data_t = *mut MIR_lref_data;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct MIR_expr_data {
pub name: *const ::std::os::raw::c_char,
pub expr_item: MIR_item_t,
pub load_addr: *mut ::std::os::raw::c_void,
}
pub type MIR_expr_data_t = *mut MIR_expr_data;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct MIR_bss {
pub name: *const ::std::os::raw::c_char,
pub len: u64,
}
pub type MIR_bss_t = *mut MIR_bss;
pub type MIR_module_t = *mut MIR_module;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct DLIST_LINK_MIR_item_t {
pub prev: MIR_item_t,
pub next: MIR_item_t,
}
pub const MIR_func_item: MIR_item_type_t = 0;
pub const MIR_proto_item: MIR_item_type_t = 1;
pub const MIR_import_item: MIR_item_type_t = 2;
pub const MIR_export_item: MIR_item_type_t = 3;
pub const MIR_forward_item: MIR_item_type_t = 4;
pub const MIR_data_item: MIR_item_type_t = 5;
pub const MIR_ref_data_item: MIR_item_type_t = 6;
pub const MIR_lref_data_item: MIR_item_type_t = 7;
pub const MIR_expr_data_item: MIR_item_type_t = 8;
pub const MIR_bss_item: MIR_item_type_t = 9;
pub type MIR_item_type_t = ::std::os::raw::c_uint;
#[repr(C)]
#[derive(Copy, Clone)]
pub struct MIR_item {
pub data: *mut ::std::os::raw::c_void,
pub module: MIR_module_t,
pub item_link: DLIST_LINK_MIR_item_t,
pub item_type: MIR_item_type_t,
pub ref_def: MIR_item_t,
pub addr: *mut ::std::os::raw::c_void,
pub export_p: ::std::os::raw::c_char,
pub section_head_p: ::std::os::raw::c_char,
pub u: MIR_item__bindgen_ty_1,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union MIR_item__bindgen_ty_1 {
pub func: MIR_func_t,
pub proto: MIR_proto_t,
pub import_id: MIR_name_t,
pub export_id: MIR_name_t,
pub forward_id: MIR_name_t,
pub data: MIR_data_t,
pub ref_data: MIR_ref_data_t,
pub lref_data: MIR_lref_data_t,
pub expr_data: MIR_expr_data_t,
pub bss: MIR_bss_t,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct DLIST_MIR_item_t {
pub head: MIR_item_t,
pub tail: MIR_item_t,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct DLIST_LINK_MIR_module_t {
pub prev: MIR_module_t,
pub next: MIR_module_t,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct MIR_module {
pub data: *mut ::std::os::raw::c_void,
pub name: *const ::std::os::raw::c_char,
pub items: DLIST_MIR_item_t,
pub module_link: DLIST_LINK_MIR_module_t,
pub last_temp_item_num: u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct DLIST_MIR_module_t {
pub head: MIR_module_t,
pub tail: MIR_module_t,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct MIR_context {
_unused: [u8; 0],
}
pub type MIR_context_t = *mut MIR_context;
#[repr(C)]
#[derive(Copy, Clone)]
pub union MIR_val_t {
pub ic: MIR_insn_code_t,
pub a: *mut ::std::os::raw::c_void,
pub i: i64,
pub u: u64,
pub f: f32,
pub d: f64,
pub ld: f64,
}
unsafe extern "C-unwind" {
pub fn _MIR_get_api_version() -> f64;
pub fn _MIR_init() -> MIR_context_t;
pub fn MIR_finish(ctx: MIR_context_t);
pub fn MIR_new_module(ctx: MIR_context_t, name: *const ::std::os::raw::c_char) -> MIR_module_t;
pub fn MIR_get_module_list(ctx: MIR_context_t) -> *mut DLIST_MIR_module_t;
pub fn MIR_new_import(ctx: MIR_context_t, name: *const ::std::os::raw::c_char) -> MIR_item_t;
pub fn MIR_new_export(ctx: MIR_context_t, name: *const ::std::os::raw::c_char) -> MIR_item_t;
pub fn MIR_new_forward(ctx: MIR_context_t, name: *const ::std::os::raw::c_char) -> MIR_item_t;
pub fn MIR_new_bss(
ctx: MIR_context_t,
name: *const ::std::os::raw::c_char,
len: usize,
) -> MIR_item_t;
pub fn MIR_new_data(
ctx: MIR_context_t,
name: *const ::std::os::raw::c_char,
el_type: MIR_type_t,
nel: usize,
els: *const ::std::os::raw::c_void,
) -> MIR_item_t;
pub fn MIR_new_string_data(
ctx: MIR_context_t,
name: *const ::std::os::raw::c_char,
str_: MIR_str_t,
) -> MIR_item_t;
pub fn MIR_new_ref_data(
ctx: MIR_context_t,
name: *const ::std::os::raw::c_char,
item: MIR_item_t,
disp: i64,
) -> MIR_item_t;
pub fn MIR_new_lref_data(
ctx: MIR_context_t,
name: *const ::std::os::raw::c_char,
label: MIR_label_t,
label2: MIR_label_t,
disp: i64,
) -> MIR_item_t;
pub fn MIR_new_expr_data(
ctx: MIR_context_t,
name: *const ::std::os::raw::c_char,
expr_item: MIR_item_t,
) -> MIR_item_t;
pub fn MIR_new_proto_arr(
ctx: MIR_context_t,
name: *const ::std::os::raw::c_char,
nres: usize,
res_types: *mut MIR_type_t,
nargs: usize,
vars: *mut MIR_var_t,
) -> MIR_item_t;
pub fn MIR_new_proto(
ctx: MIR_context_t,
name: *const ::std::os::raw::c_char,
nres: usize,
res_types: *mut MIR_type_t,
nargs: usize,
...
) -> MIR_item_t;
pub fn MIR_new_vararg_proto_arr(
ctx: MIR_context_t,
name: *const ::std::os::raw::c_char,
nres: usize,
res_types: *mut MIR_type_t,
nargs: usize,
vars: *mut MIR_var_t,
) -> MIR_item_t;
pub fn MIR_new_vararg_proto(
ctx: MIR_context_t,
name: *const ::std::os::raw::c_char,
nres: usize,
res_types: *mut MIR_type_t,
nargs: usize,
...
) -> MIR_item_t;
pub fn MIR_new_func_arr(
ctx: MIR_context_t,
name: *const ::std::os::raw::c_char,
nres: usize,
res_types: *mut MIR_type_t,
nargs: usize,
vars: *mut MIR_var_t,
) -> MIR_item_t;
pub fn MIR_new_func(
ctx: MIR_context_t,
name: *const ::std::os::raw::c_char,
nres: usize,
res_types: *mut MIR_type_t,
nargs: usize,
...
) -> MIR_item_t;
pub fn MIR_new_vararg_func_arr(
ctx: MIR_context_t,
name: *const ::std::os::raw::c_char,
nres: usize,
res_types: *mut MIR_type_t,
nargs: usize,
vars: *mut MIR_var_t,
) -> MIR_item_t;
pub fn MIR_new_vararg_func(
ctx: MIR_context_t,
name: *const ::std::os::raw::c_char,
nres: usize,
res_types: *mut MIR_type_t,
nargs: usize,
...
) -> MIR_item_t;
pub fn MIR_item_name(ctx: MIR_context_t, item: MIR_item_t) -> *const ::std::os::raw::c_char;
pub fn MIR_get_item_func(ctx: MIR_context_t, item: MIR_item_t) -> MIR_func_t;
pub fn MIR_new_func_reg(
ctx: MIR_context_t,
func: MIR_func_t,
type_: MIR_type_t,
name: *const ::std::os::raw::c_char,
) -> MIR_reg_t;
pub fn MIR_new_global_func_reg(
ctx: MIR_context_t,
func: MIR_func_t,
type_: MIR_type_t,
name: *const ::std::os::raw::c_char,
hard_reg_name: *const ::std::os::raw::c_char,
) -> MIR_reg_t;
pub fn MIR_finish_func(ctx: MIR_context_t);
pub fn MIR_finish_module(ctx: MIR_context_t);
pub fn MIR_get_error_func(ctx: MIR_context_t) -> MIR_error_func_t;
pub fn MIR_set_error_func(ctx: MIR_context_t, func: MIR_error_func_t);
pub fn MIR_get_func_redef_permission_p(ctx: MIR_context_t) -> ::std::os::raw::c_int;
pub fn MIR_set_func_redef_permission(ctx: MIR_context_t, flag_p: ::std::os::raw::c_int);
pub fn MIR_new_insn_arr(
ctx: MIR_context_t,
code: MIR_insn_code_t,
nops: usize,
ops: *mut MIR_op_t,
) -> MIR_insn_t;
pub fn MIR_new_insn(ctx: MIR_context_t, code: MIR_insn_code_t, ...) -> MIR_insn_t;
pub fn MIR_new_call_insn(ctx: MIR_context_t, nops: usize, ...) -> MIR_insn_t;
pub fn MIR_new_jcall_insn(ctx: MIR_context_t, nops: usize, ...) -> MIR_insn_t;
pub fn MIR_new_ret_insn(ctx: MIR_context_t, nops: usize, ...) -> MIR_insn_t;
pub fn MIR_copy_insn(ctx: MIR_context_t, insn: MIR_insn_t) -> MIR_insn_t;
pub fn MIR_insn_name(
ctx: MIR_context_t,
code: MIR_insn_code_t,
) -> *const ::std::os::raw::c_char;
pub fn MIR_insn_nops(ctx: MIR_context_t, insn: MIR_insn_t) -> usize;
pub fn MIR_insn_op_mode(
ctx: MIR_context_t,
insn: MIR_insn_t,
nop: usize,
out_p: *mut ::std::os::raw::c_int,
) -> MIR_op_mode_t;
pub fn MIR_new_label(ctx: MIR_context_t) -> MIR_insn_t;
pub fn MIR_reg(
ctx: MIR_context_t,
reg_name: *const ::std::os::raw::c_char,
func: MIR_func_t,
) -> MIR_reg_t;
pub fn MIR_reg_type(ctx: MIR_context_t, reg: MIR_reg_t, func: MIR_func_t) -> MIR_type_t;
pub fn MIR_reg_name(
ctx: MIR_context_t,
reg: MIR_reg_t,
func: MIR_func_t,
) -> *const ::std::os::raw::c_char;
pub fn MIR_reg_hard_reg_name(
ctx: MIR_context_t,
reg: MIR_reg_t,
func: MIR_func_t,
) -> *const ::std::os::raw::c_char;
pub fn MIR_alias_name(ctx: MIR_context_t, alias: MIR_alias_t) -> *const ::std::os::raw::c_char;
pub fn MIR_alias(ctx: MIR_context_t, name: *const ::std::os::raw::c_char) -> MIR_alias_t;
pub fn MIR_new_reg_op(ctx: MIR_context_t, reg: MIR_reg_t) -> MIR_op_t;
pub fn MIR_new_int_op(ctx: MIR_context_t, v: i64) -> MIR_op_t;
pub fn MIR_new_uint_op(ctx: MIR_context_t, v: u64) -> MIR_op_t;
pub fn MIR_new_float_op(ctx: MIR_context_t, v: f32) -> MIR_op_t;
pub fn MIR_new_double_op(ctx: MIR_context_t, v: f64) -> MIR_op_t;
pub fn MIR_new_ldouble_op(ctx: MIR_context_t, v: f64) -> MIR_op_t;
pub fn MIR_new_ref_op(ctx: MIR_context_t, item: MIR_item_t) -> MIR_op_t;
pub fn MIR_new_str_op(ctx: MIR_context_t, str_: MIR_str_t) -> MIR_op_t;
pub fn MIR_new_mem_op(
ctx: MIR_context_t,
type_: MIR_type_t,
disp: MIR_disp_t,
base: MIR_reg_t,
index: MIR_reg_t,
scale: MIR_scale_t,
) -> MIR_op_t;
pub fn MIR_new_alias_mem_op(
ctx: MIR_context_t,
type_: MIR_type_t,
disp: MIR_disp_t,
base: MIR_reg_t,
index: MIR_reg_t,
scale: MIR_scale_t,
alias: MIR_alias_t,
noalias: MIR_alias_t,
) -> MIR_op_t;
pub fn MIR_new_label_op(ctx: MIR_context_t, label: MIR_label_t) -> MIR_op_t;
pub fn MIR_op_eq_p(ctx: MIR_context_t, op1: MIR_op_t, op2: MIR_op_t) -> ::std::os::raw::c_int;
pub fn MIR_op_hash_step(ctx: MIR_context_t, h: htab_hash_t, op: MIR_op_t) -> htab_hash_t;
pub fn MIR_append_insn(ctx: MIR_context_t, func: MIR_item_t, insn: MIR_insn_t);
pub fn MIR_prepend_insn(ctx: MIR_context_t, func: MIR_item_t, insn: MIR_insn_t);
pub fn MIR_insert_insn_after(
ctx: MIR_context_t,
func: MIR_item_t,
after: MIR_insn_t,
insn: MIR_insn_t,
);
pub fn MIR_insert_insn_before(
ctx: MIR_context_t,
func: MIR_item_t,
before: MIR_insn_t,
insn: MIR_insn_t,
);
pub fn MIR_remove_insn(ctx: MIR_context_t, func: MIR_item_t, insn: MIR_insn_t);
pub fn MIR_change_module_ctx(old_ctx: MIR_context_t, m: MIR_module_t, new_ctx: MIR_context_t);
pub fn MIR_reverse_branch_code(code: MIR_insn_code_t) -> MIR_insn_code_t;
pub fn MIR_type_str(ctx: MIR_context_t, tp: MIR_type_t) -> *const ::std::os::raw::c_char;
pub fn MIR_output_str(ctx: MIR_context_t, f: *mut FILE, str_: MIR_str_t);
pub fn MIR_output_op(ctx: MIR_context_t, f: *mut FILE, op: MIR_op_t, func: MIR_func_t);
pub fn MIR_output_insn(
ctx: MIR_context_t,
f: *mut FILE,
insn: MIR_insn_t,
func: MIR_func_t,
newline_p: ::std::os::raw::c_int,
);
pub fn MIR_output_item(ctx: MIR_context_t, f: *mut FILE, item: MIR_item_t);
pub fn MIR_output_module(ctx: MIR_context_t, f: *mut FILE, module: MIR_module_t);
pub fn MIR_output(ctx: MIR_context_t, f: *mut FILE);
pub fn MIR_write(ctx: MIR_context_t, f: *mut FILE);
pub fn MIR_write_module(ctx: MIR_context_t, f: *mut FILE, module: MIR_module_t);
pub fn MIR_read(ctx: MIR_context_t, f: *mut FILE);
pub fn MIR_write_with_func(
ctx: MIR_context_t,
writer_func: ::std::option::Option<
unsafe extern "C-unwind" fn(
arg1: *mut ::std::os::raw::c_void,
arg2: u8,
) -> ::std::os::raw::c_int,
>,
writer_arg: *mut ::std::os::raw::c_void,
);
pub fn MIR_write_module_with_func(
ctx: MIR_context_t,
writer_func: ::std::option::Option<
unsafe extern "C-unwind" fn(
arg1: *mut ::std::os::raw::c_void,
arg2: u8,
) -> ::std::os::raw::c_int,
>,
module: MIR_module_t,
writer_arg: *mut ::std::os::raw::c_void,
);
pub fn MIR_read_with_func(
ctx: MIR_context_t,
reader_func: ::std::option::Option<
unsafe extern "C-unwind" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,
>,
reader_arg: *mut ::std::os::raw::c_void,
);
pub fn MIR_scan_string(ctx: MIR_context_t, str_: *const ::std::os::raw::c_char);
pub fn MIR_get_global_item(
ctx: MIR_context_t,
name: *const ::std::os::raw::c_char,
) -> MIR_item_t;
pub fn MIR_load_module(ctx: MIR_context_t, m: MIR_module_t);
pub fn MIR_load_external(
ctx: MIR_context_t,
name: *const ::std::os::raw::c_char,
addr: *mut ::std::os::raw::c_void,
);
pub fn MIR_link(
ctx: MIR_context_t,
set_interface: ::std::option::Option<
unsafe extern "C-unwind" fn(ctx: MIR_context_t, item: MIR_item_t),
>,
import_resolver: ::std::option::Option<
unsafe extern "C-unwind" fn(
arg1: *mut ::std::os::raw::c_void,
arg2: *const ::std::os::raw::c_char,
) -> *mut ::std::os::raw::c_void,
>,
resolver_arg: *mut ::std::os::raw::c_void,
);
pub fn MIR_interp(
ctx: MIR_context_t,
func_item: MIR_item_t,
results: *mut MIR_val_t,
nargs: usize,
...
);
pub fn MIR_interp_arr(
ctx: MIR_context_t,
func_item: MIR_item_t,
results: *mut MIR_val_t,
nargs: usize,
vals: *mut MIR_val_t,
);
pub fn MIR_set_interp_interface(ctx: MIR_context_t, func_item: MIR_item_t);
}