From: Ulrich Weigand Date: Thu, 9 Sep 2004 21:57:50 +0000 (+0000) Subject: combine.c (try_combine): When swapping i2 and i3... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=0b21d1dcf96c37da406c3720814b0bb5b5450929;p=gcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 34f6e6abc13..0d27f66352a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2004-09-09 Ulrich Weigand + + * 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 * reload.c (find_reloads_address): Pass correct operand to diff --git a/gcc/combine.c b/gcc/combine.c index 6f1ce6c2759..24ebbc97147 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));