From: J"orn Rennecke Date: Tue, 7 Jul 1998 13:26:49 +0000 (+0000) Subject: expr.c (emit_queue): If emitting a SEQUENCE, set QUEUED_INSN to the first insn of... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=41b083c42ebb10185b1155afbaa4bb09c7bb435a;p=gcc.git expr.c (emit_queue): If emitting a SEQUENCE, set QUEUED_INSN to the first insn of the sequence. * expr.c (emit_queue): If emitting a SEQUENCE, set QUEUED_INSN to the first insn of the sequence. From-SVN: r20997 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 716d74054cb..04cd1d8dd65 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Tue Jul 7 21:23:36 1998 J"orn Rennecke + + * expr.c (emit_queue): If emitting a SEQUENCE, set QUEUED_INSN + to the first insn of the sequence. + Tue Jul 7 21:05:25 1998 J"orn Rennecke * cse (cse_insn): Don't make change without validation. diff --git a/gcc/expr.c b/gcc/expr.c index a7abc5ab832..b9c0e181244 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -522,7 +522,15 @@ emit_queue () register rtx p; while ((p = pending_chain)) { - QUEUED_INSN (p) = emit_insn (QUEUED_BODY (p)); + rtx body = QUEUED_BODY (p); + + if (GET_CODE (body) == SEQUENCE) + { + QUEUED_INSN (p) = XVECEXP (QUEUED_BODY (p), 0, 0); + emit_insn (QUEUED_BODY (p)); + } + else + QUEUED_INSN (p) = emit_insn (QUEUED_BODY (p)); pending_chain = QUEUED_NEXT (p); } } diff --git a/gcc/expr.h b/gcc/expr.h index 02d75bbf98e..a53a036a15a 100644 --- a/gcc/expr.h +++ b/gcc/expr.h @@ -30,7 +30,8 @@ Boston, MA 02111-1307, USA. */ /* The variable for which an increment is queued. */ #define QUEUED_VAR(P) XEXP (P, 0) /* If the increment has been emitted, this is the insn - that does the increment. It is zero before the increment is emitted. */ + that does the increment. It is zero before the increment is emitted. + If more than one insn is emitted, this is the first insn. */ #define QUEUED_INSN(P) XEXP (P, 1) /* If a pre-increment copy has been generated, this is the copy (it is a temporary reg). Zero if no copy made yet. */