Bring in diff from 1.144.4.10 to 1.144.4.11, from the gcc CVS repository.
This fixes (at least) broken compilation of xkbcomp with -O2 on powerpc. ChangeLog entry: 2001-05-17 Bernd Schmidt <bernds@redhat.com> * expr.c (protect_from_queue): Protect against subsequent calls to emit_queue. (expand_expr, case ADDR_EXPR): Prevent protect_from_queue from being too clever. CVS log entry: revision 1.144.4.11 date: 2001/05/17 17:01:06; author: bernds; state: Exp; lines: +10 -3 Fix queueing-related bugs
This commit is contained in:
parent
c24cb24f0d
commit
169b0eb038
13
gnu/dist/toolchain/gcc/expr.c
vendored
13
gnu/dist/toolchain/gcc/expr.c
vendored
@ -449,6 +449,9 @@ protect_from_queue (x, modify)
|
||||
QUEUED_INSN (y));
|
||||
return temp;
|
||||
}
|
||||
/* Copy the address into a pseudo, so that the returned value
|
||||
remains correct across calls to emit_queue. */
|
||||
XEXP (new, 0) = copy_to_reg (XEXP (new, 0));
|
||||
return new;
|
||||
}
|
||||
/* Otherwise, recursively protect the subexpressions of all
|
||||
@ -475,9 +478,11 @@ protect_from_queue (x, modify)
|
||||
}
|
||||
return x;
|
||||
}
|
||||
/* If the increment has not happened, use the variable itself. */
|
||||
/* If the increment has not happened, use the variable itself. Copy it
|
||||
into a new pseudo so that the value remains correct across calls to
|
||||
emit_queue. */
|
||||
if (QUEUED_INSN (x) == 0)
|
||||
return QUEUED_VAR (x);
|
||||
return copy_to_reg (QUEUED_VAR (x));
|
||||
/* If the increment has happened and a pre-increment copy exists,
|
||||
use that copy. */
|
||||
if (QUEUED_COPY (x) != 0)
|
||||
@ -8076,7 +8081,9 @@ expand_expr (exp, target, tmode, modifier)
|
||||
if (ignore)
|
||||
return op0;
|
||||
|
||||
op0 = protect_from_queue (op0, 0);
|
||||
/* Pass 1 for MODIFY, so that protect_from_queue doesn't get
|
||||
clever and returns a REG when given a MEM. */
|
||||
op0 = protect_from_queue (op0, 1);
|
||||
|
||||
/* We would like the object in memory. If it is a constant,
|
||||
we can have it be statically allocated into memory. For
|
||||
|
Loading…
Reference in New Issue
Block a user