mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-03-20 17:31:08 +00:00
Ensure pointer values always have a type
The dags generator was creating a pointer value with no type which caused print_statement to segfault.
This commit is contained in:
parent
ee1f5f9478
commit
cc27949a34
2 changed files with 6 additions and 1 deletions
|
@ -787,6 +787,7 @@ generate_moveps (dag_t *dag, sblock_t *block, dagnode_t *dagnode)
|
|||
operand_t *operands[3] = {0, 0, 0};
|
||||
statement_t *st;
|
||||
operand_t *dst = 0;
|
||||
type_t *type;
|
||||
|
||||
operands[0] = make_operand (dag, block, dagnode, 0);
|
||||
operands[1] = make_operand (dag, block, dagnode, 1);
|
||||
|
@ -794,7 +795,8 @@ generate_moveps (dag_t *dag, sblock_t *block, dagnode_t *dagnode)
|
|||
var_iter = set_next (var_iter)) {
|
||||
var = dag->labels[var_iter->element];
|
||||
dst = var->op;
|
||||
operands[2] = value_operand (new_pointer_val (0, 0, dst->o.def));
|
||||
type = dst->o.def->type;
|
||||
operands[2] = value_operand (new_pointer_val (0, type, dst->o.def));
|
||||
st = build_statement ("<MOVEP>", operands, var->expr);
|
||||
sblock_add_statement (block, st);
|
||||
}
|
||||
|
|
|
@ -189,6 +189,9 @@ ex_value_t *
|
|||
new_pointer_val (int pointer_val, type_t *type, def_t *def)
|
||||
{
|
||||
ex_value_t val;
|
||||
if (!type) {
|
||||
internal_error (0, "pointer value with no type");
|
||||
}
|
||||
memset (&val, 0, sizeof (val));
|
||||
set_val_type (&val, pointer_type (type));
|
||||
val.v.pointer.val = pointer_val;
|
||||
|
|
Loading…
Reference in a new issue