void assert_printed_temporary_expr(struct string *expected, enum vm_type type, struct var_info *var, struct var_info *var2) { struct expression *expr; expr = temporary_expr(type, var, var2); assert_print_expr(expected, expr); }
struct expression * dup_expr(struct parse_context *ctx, struct expression *expr) { struct expression *dest; struct statement *stmt; dest = temporary_expr(expr->vm_type, ctx->cu); expr_get(dest); stmt = alloc_statement(STMT_STORE); stmt->store_dest = &dest->node; stmt->store_src = &expr->node; convert_statement(ctx, stmt); return dest; }
static void __assert_convert_store(unsigned char *code, unsigned long code_size, enum vm_type expected_type, unsigned char expected_index) { struct statement *stmt; struct basic_block *bb; bb = alloc_simple_bb(code, code_size); stack_push(bb->mimic_stack, temporary_expr(expected_type, bb->b_parent)); convert_to_ir(bb->b_parent); stmt = stmt_entry(bb->stmt_list.next); assert_store_stmt(stmt); assert_temporary_expr(expected_type, stmt->store_src); assert_local_expr(expected_type, expected_index, stmt->store_dest); assert_true(stack_is_empty(bb->mimic_stack)); free_simple_bb(bb); }