From: Bernd Schmidt Date: Mon, 21 May 2012 21:37:01 +0000 (+0000) Subject: re PR rtl-optimization/53373 (ICE on valid code with -mavx) X-Git-Tag: misc/gccgo-go1_1_2~2776 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1d2944a3fe5f08e0588d855e52f5ad14c8241c97;p=thirdparty%2Fgcc.git re PR rtl-optimization/53373 (ICE on valid code with -mavx) PR rtl-optimization/53373 * caller-save.c (save_call_clobbered_regs): Look into a possible PARALLEL manually rather than using single_set on a call insn. From-SVN: r187745 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 798ed806f59c..7015fac28093 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-05-21 Bernd Schmidt + + PR rtl-optimization/53373 + * caller-save.c (save_call_clobbered_regs): Look into a possible + PARALLEL manually rather than using single_set on a call insn. + 2012-05-21 Jakub Jelinek PR tree-optimization/53436 diff --git a/gcc/caller-save.c b/gcc/caller-save.c index c8f3b145946e..44131f93efd6 100644 --- a/gcc/caller-save.c +++ b/gcc/caller-save.c @@ -872,11 +872,13 @@ save_call_clobbered_regs (void) && HARD_REGISTER_P (cheap) && TEST_HARD_REG_BIT (call_used_reg_set, REGNO (cheap))) { - rtx call_set = single_set (insn); - rtx dest = SET_DEST (call_set); - rtx pat = gen_rtx_SET (VOIDmode, cheap, - copy_rtx (dest)); - chain = insert_one_insn (chain, 0, -1, pat); + rtx dest, newpat; + rtx pat = PATTERN (insn); + if (GET_CODE (pat) == PARALLEL) + pat = XVECEXP (pat, 0, 0); + dest = SET_DEST (pat); + newpat = gen_rtx_SET (VOIDmode, cheap, copy_rtx (dest)); + chain = insert_one_insn (chain, 0, -1, newpat); } } last = chain;