diff options
author | J"orn Rennecke <amylaar@cygnus.co.uk> | 1998-07-07 13:26:49 +0000 |
---|---|---|
committer | Joern Rennecke <amylaar@gcc.gnu.org> | 1998-07-07 14:26:49 +0100 |
commit | 41b083c42ebb10185b1155afbaa4bb09c7bb435a (patch) | |
tree | c404f9df73ea6755a59c562302553f7b13e58de8 /gcc | |
parent | 759bd8b73bcd7a978d63e9193f30cd6c6bdd0b74 (diff) | |
download | gcc-41b083c42ebb10185b1155afbaa4bb09c7bb435a.zip gcc-41b083c42ebb10185b1155afbaa4bb09c7bb435a.tar.gz gcc-41b083c42ebb10185b1155afbaa4bb09c7bb435a.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/expr.c | 10 | ||||
-rw-r--r-- | gcc/expr.h | 3 |
3 files changed, 16 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 716d740..04cd1d8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Tue Jul 7 21:23:36 1998 J"orn Rennecke <amylaar@cygnus.co.uk> + + * 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 <amylaar@cygnus.co.uk> * cse (cse_insn): Don't make change without validation. @@ -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); } } @@ -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. */ |