expr.c (emit_move_insn): Add REG_EQUAL note when constant loaded into register was forced into memory.

* expr.c (emit_move_insn): Add REG_EQUAL note when constant loaded
into register was forced into memory.

From-SVN: r39301
This commit is contained in:
Alexandre Oliva 2001-01-27 20:24:34 +00:00 committed by Alexandre Oliva
parent 8a8de62d6d
commit de1b33ddc0
2 changed files with 18 additions and 2 deletions

View File

@ -1,3 +1,8 @@
2001-01-27 Alexandre Oliva <aoliva@redhat.com>
* expr.c (emit_move_insn): Add REG_EQUAL note when constant loaded
into register was forced into memory.
2001-01-27 Alexandre Oliva <aoliva@redhat.com>
* Makefile.in: Remove uses of + before $(MAKE).

View File

@ -2709,6 +2709,8 @@ emit_move_insn (x, y)
rtx x, y;
{
enum machine_mode mode = GET_MODE (x);
rtx y_cst = NULL_RTX;
rtx last_insn;
x = protect_from_queue (x, 1);
y = protect_from_queue (y, 0);
@ -2720,7 +2722,10 @@ emit_move_insn (x, y)
if (GET_CODE (y) == CONSTANT_P_RTX)
;
else if (CONSTANT_P (y) && ! LEGITIMATE_CONSTANT_P (y))
y = force_const_mem (mode, y);
{
y_cst = y;
y = force_const_mem (mode, y);
}
/* If X or Y are memory references, verify that their addresses are valid
for the machine. */
@ -2740,7 +2745,13 @@ emit_move_insn (x, y)
if (mode == BLKmode)
abort ();
return emit_move_insn_1 (x, y);
last_insn = emit_move_insn_1 (x, y);
if (y_cst && GET_CODE (x) == REG)
REG_NOTES (last_insn)
= gen_rtx_EXPR_LIST (REG_EQUAL, y_cst, REG_NOTES (last_insn));
return last_insn;
}
/* Low level part of emit_move_insn.