From de1b33ddc0675f85ca11c28c735408794d133803 Mon Sep 17 00:00:00 2001 From: Alexandre Oliva Date: Sat, 27 Jan 2001 20:24:34 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 5 +++++ gcc/expr.c | 15 +++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 604e937..bc2240d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2001-01-27 Alexandre Oliva + * expr.c (emit_move_insn): Add REG_EQUAL note when constant loaded + into register was forced into memory. + +2001-01-27 Alexandre Oliva + * Makefile.in: Remove uses of + before $(MAKE). 2001-01-26 Richard Henderson diff --git a/gcc/expr.c b/gcc/expr.c index 848431e..d363510 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -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. -- 2.7.4