don't use move for non-structs. it wasn't an optimisation anyway. this

fixes the internal error when compiling the quake1 progs
This commit is contained in:
Bill Currie 2002-10-20 01:25:15 +00:00
parent 65033cbe64
commit 6ece3bc481

View file

@ -2176,17 +2176,17 @@ assign_expr (expr_t *e1, expr_t *e2)
} }
type = t1; type = t1;
if (is_indirect (e1) && is_indirect (e2)) { if (is_indirect (e1) && is_indirect (e2)) {
if (options.code.progsversion == PROG_ID_VERSION) { if (extract_type (e2) == ev_struct) {
e1 = address_expr (e1, 0, 0);
e2 = address_expr (e2, 0, 0);
e = new_binary_expr ('M', e1, e2);
} else {
expr_t *temp = new_temp_def_expr (t1); expr_t *temp = new_temp_def_expr (t1);
e = new_block_expr (); e = new_block_expr ();
append_expr (e, assign_expr (temp, e2)); append_expr (e, assign_expr (temp, e2));
append_expr (e, assign_expr (e1, temp)); append_expr (e, assign_expr (e1, temp));
e->e.block.result = temp; e->e.block.result = temp;
} else {
e1 = address_expr (e1, 0, 0);
e2 = address_expr (e2, 0, 0);
e = new_binary_expr ('M', e1, e2);
} }
return e; return e;
} else if (is_indirect (e1)) { } else if (is_indirect (e1)) {