From: Bernd Schmidt Date: Thu, 6 Nov 2014 17:19:57 +0000 (+0000) Subject: Don't combine calls into i3, it wouldn't be changed into a CALL_INSN. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9cb6671480ac7c1ed75920dc8829d76a1db7cfe9;p=gcc.git Don't combine calls into i3, it wouldn't be changed into a CALL_INSN. * combine.c (try_combine): Don't allow a call as one of the source insns. From-SVN: r217197 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1121f3e8564..4e9a739f0ec 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ 2014-11-06 Bernd Schmidt + * combine.c (try_combine): Don't allow a call as one of the source + insns. + * target.def (decl_end): New hook. * varasm.c (assemble_variable_contents, assemble_constant_contents): Use it. diff --git a/gcc/combine.c b/gcc/combine.c index e240cfb9449..6a7d16bf27e 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -2553,7 +2553,10 @@ try_combine (rtx_insn *i3, rtx_insn *i2, rtx_insn *i1, rtx_insn *i0, /* Exit early if one of the insns involved can't be used for combinations. */ - if (cant_combine_insn_p (i3) + if (CALL_P (i2) + || (i1 && CALL_P (i1)) + || (i0 && CALL_P (i0)) + || cant_combine_insn_p (i3) || cant_combine_insn_p (i2) || (i1 && cant_combine_insn_p (i1)) || (i0 && cant_combine_insn_p (i0))