diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/combine.c | 5 |
2 files changed, 7 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1121f3e..4e9a739 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ 2014-11-06 Bernd Schmidt <bernds@codesourcery.com> + * 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 e240cfb..6a7d16b 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)) |