From 9cb6671480ac7c1ed75920dc8829d76a1db7cfe9 Mon Sep 17 00:00:00 2001 From: Bernd Schmidt Date: Thu, 6 Nov 2014 17:19:57 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 3 +++ gcc/combine.c | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) 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)) -- 2.30.2