aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog17
-rw-r--r--gcc/combine.c28
2 files changed, 26 insertions, 19 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6d7b907..0ed3086 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,7 +1,12 @@
+2011-04-08 Eric Botcazou <ebotcazou@adacore.com>
+
+ * combine.c (combine_validate_cost): Adjust comments. Set registered
+ cost of I0 to zero at the end, if any.
+
2011-04-08 Xinliang David Li <davidxl@google.com>
- * ipa-cp.c (ipcp_update_profiling): Correct
- negative scale factor due to insane profile data.
+ * ipa-cp.c (ipcp_update_profiling): Correct negative scale factor due
+ to insane profile data.
2011-04-08 Xinliang David Li <davidxl@google.com>
@@ -11,9 +16,9 @@
2011-04-08 Steven G. Kargl <kargl@gcc.gnu.org>
- PR 47829
- gcc/config.gcc: disable unwind table generation for crtbegin/crtend
- on i386-*-freebsd.
+ PR target/47829
+ * config.gcc (i386-*-freebsd): Disable unwind table generation for
+ crtbegin/crtend.
2011-04-08 Michael Matz <matz@suse.de>
@@ -53,7 +58,7 @@
2011-04-08 Vladimir Makarov <vmakarov@redhat.com>
- PR 48435
+ PR inline-asm/48435
* ira-color.c (setup_profitable_hard_regs): Add comments.
Don't take prohibited hard regs into account.
(setup_conflict_profitable_regs): Rename to
diff --git a/gcc/combine.c b/gcc/combine.c
index 8771acf..32a3d73 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -789,14 +789,13 @@ do_SUBST_MODE (rtx *into, enum machine_mode newval)
#define SUBST_MODE(INTO, NEWVAL) do_SUBST_MODE(&(INTO), (NEWVAL))
-/* Subroutine of try_combine. Determine whether the combine replacement
- patterns NEWPAT, NEWI2PAT and NEWOTHERPAT are cheaper according to
- insn_rtx_cost that the original instruction sequence I0, I1, I2, I3 and
- undobuf.other_insn. Note that I1 and/or NEWI2PAT may be NULL_RTX.
- NEWOTHERPAT and undobuf.other_insn may also both be NULL_RTX. This
- function returns false, if the costs of all instructions can be
- estimated, and the replacements are more expensive than the original
- sequence. */
+/* Subroutine of try_combine. Determine whether the replacement patterns
+ NEWPAT, NEWI2PAT and NEWOTHERPAT are cheaper according to insn_rtx_cost
+ than the original sequence I0, I1, I2, I3 and undobuf.other_insn. Note
+ that I0, I1 and/or NEWI2PAT may be NULL_RTX. Similarly, NEWOTHERPAT and
+ undobuf.other_insn may also both be NULL_RTX. Return false if the cost
+ of all the instructions can be estimated and the replacements are more
+ expensive than the original sequence. */
static bool
combine_validate_cost (rtx i0, rtx i1, rtx i2, rtx i3, rtx newpat,
@@ -861,10 +860,9 @@ combine_validate_cost (rtx i0, rtx i1, rtx i2, rtx i3, rtx newpat,
old_cost = 0;
}
- /* Disallow this recombination if both new_cost and old_cost are
- greater than zero, and new_cost is greater than old cost. */
- if (old_cost > 0
- && new_cost > old_cost)
+ /* Disallow this combination if both new_cost and old_cost are greater than
+ zero, and new_cost is greater than old cost. */
+ if (old_cost > 0 && new_cost > old_cost)
{
if (dump_file)
{
@@ -910,7 +908,11 @@ combine_validate_cost (rtx i0, rtx i1, rtx i2, rtx i3, rtx newpat,
INSN_COST (i2) = new_i2_cost;
INSN_COST (i3) = new_i3_cost;
if (i1)
- INSN_COST (i1) = 0;
+ {
+ INSN_COST (i1) = 0;
+ if (i0)
+ INSN_COST (i0) = 0;
+ }
return true;
}