Beispiel #1
0
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);
}
Beispiel #2
0
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;
}
Beispiel #3
0
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);
}