From cc8765963d50329c6795b728b44514020b23b5d6 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Sat, 4 Jul 1992 13:59:44 -0400 Subject: [PATCH] *** empty log message *** From-SVN: r1428 --- gcc/combine.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/gcc/combine.c b/gcc/combine.c index 922e6c6fa2c..5e6a18300c7 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -302,17 +302,20 @@ struct undobuf static struct undobuf undobuf; -/* Substitute NEWVAL, an rtx expression, into INTO, a place in a some +/* Substitute NEWVAL, an rtx expression, into INTO, a place in some insn. The substitution can be undone by undo_all. If INTO is already - set to NEWVAL, do not record this change. */ + set to NEWVAL, do not record this change. Because computing NEWVAL might + also call SUBST, we have to compute it before we put anything into + the undo table. */ #define SUBST(INTO, NEWVAL) \ - do { if (undobuf.num_undo < MAX_UNDO) \ + do { rtx _new = (NEWVAL); \ + if (undobuf.num_undo < MAX_UNDO) \ { \ undobuf.undo[undobuf.num_undo].where = &INTO; \ undobuf.undo[undobuf.num_undo].old_contents = INTO; \ undobuf.undo[undobuf.num_undo].is_int = 0; \ - INTO = NEWVAL; \ + INTO = _new; \ if (undobuf.undo[undobuf.num_undo].old_contents != INTO) \ undobuf.num_undo++; \ } \ -- 2.30.2