/* returns register number */ static int dfw_append_mk_range(dfwork_t *dfw, stnode_t *node) { int hf_reg, reg; header_field_info *hfinfo; dfvm_insn_t *insn; dfvm_value_t *val; hfinfo = sttype_range_hfinfo(node); hf_reg = dfw_append_read_tree(dfw, hfinfo); insn = dfvm_insn_new(MK_RANGE); val = dfvm_value_new(REGISTER); val->value.numeric = hf_reg; insn->arg1 = val; val = dfvm_value_new(REGISTER); reg =dfw->next_register++; val->value.numeric = reg; insn->arg2 = val; val = dfvm_value_new(DRANGE); val->value.drange = sttype_range_drange(node); insn->arg3 = val; sttype_range_remove_drange(node); dfw_append_insn(dfw, insn); return reg; }
/* returns register number */ static int dfw_append_mk_range(dfwork_t *dfw, stnode_t *node, dfvm_value_t **p_jmp) { int hf_reg, reg; stnode_t *entity; dfvm_insn_t *insn; dfvm_value_t *val; entity = sttype_range_entity(node); /* XXX, check if p_jmp logic is OK */ hf_reg = gen_entity(dfw, entity, p_jmp); insn = dfvm_insn_new(MK_RANGE); val = dfvm_value_new(REGISTER); val->value.numeric = hf_reg; insn->arg1 = val; val = dfvm_value_new(REGISTER); reg =dfw->next_register++; val->value.numeric = reg; insn->arg2 = val; val = dfvm_value_new(DRANGE); val->value.drange = sttype_range_drange(node); insn->arg3 = val; sttype_range_remove_drange(node); dfw_append_insn(dfw, insn); return reg; }