diff options
author | Ulrich Weigand <uweigand@de.ibm.com> | 2004-09-09 21:57:50 +0000 |
---|---|---|
committer | Ulrich Weigand <uweigand@gcc.gnu.org> | 2004-09-09 21:57:50 +0000 |
commit | 0b21d1dcf96c37da406c3720814b0bb5b5450929 (patch) | |
tree | 7cbd18b60d711087fd1d79299cb4ad739fc57197 /gcc | |
parent | 7bb09d158e46c14ec2d55ad0bf92f4abdeeed6c2 (diff) | |
download | gcc-0b21d1dcf96c37da406c3720814b0bb5b5450929.zip gcc-0b21d1dcf96c37da406c3720814b0bb5b5450929.tar.gz gcc-0b21d1dcf96c37da406c3720814b0bb5b5450929.tar.bz2 |
combine.c (try_combine): When swapping i2 and i3...
* combine.c (try_combine): When swapping i2 and i3, newi2pat may be
a PARALLEL instead of a SET due to added clobbers.
From-SVN: r87255
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/combine.c | 8 |
2 files changed, 12 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 34f6e6a..0d27f66 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2004-09-09 Ulrich Weigand <uweigand@de.ibm.com> + * combine.c (try_combine): When swapping i2 and i3, newi2pat may be + a PARALLEL instead of a SET due to added clobbers. + +2004-09-09 Ulrich Weigand <uweigand@de.ibm.com> + * reload.c (find_reloads_address): Pass correct operand to maybe_memory_address_p. diff --git a/gcc/combine.c b/gcc/combine.c index 6f1ce6c..24ebbc9 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -2615,7 +2615,13 @@ try_combine (rtx i3, rtx i2, rtx i1, int *new_direct_jump_p) The simplest way to remove the link is to point it at I1, which we know will be a NOTE. */ - ni2dest = SET_DEST (newi2pat); + /* newi2pat is usually a SET here; however, recog_for_combine might + have added some clobbers. */ + if (GET_CODE (newi2pat) == PARALLEL) + ni2dest = SET_DEST (XVECEXP (newi2pat, 0, 0)); + else + ni2dest = SET_DEST (newi2pat); + for (insn = NEXT_INSN (i3); insn && (this_basic_block->next_bb == EXIT_BLOCK_PTR || insn != BB_HEAD (this_basic_block->next_bb)); |