aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2009-01-28 17:05:41 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2009-01-28 17:05:41 +0100
commitc7789bfb8c6f12d57f24952a4ac3c0ae935db61b (patch)
tree42d7b3132654ac4bebb78e905e803a7d5675ccc9 /gcc
parentde081cfd3b88d197c6c3e545c6d55581140c7c21 (diff)
downloadgcc-c7789bfb8c6f12d57f24952a4ac3c0ae935db61b.zip
gcc-c7789bfb8c6f12d57f24952a4ac3c0ae935db61b.tar.gz
gcc-c7789bfb8c6f12d57f24952a4ac3c0ae935db61b.tar.bz2
re PR rtl-optimization/38740 (Incorrect delayed branch optimization)
PR rtl-optimization/38740 * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling if !optimize. * config/mips/mips.c (mips_reorg): Likewise. From-SVN: r143733
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/mips/mips.c2
-rw-r--r--gcc/reorg.c3
3 files changed, 10 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 526398f..b2e3785 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2009-01-28 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/38740
+ * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
+ if !optimize.
+ * config/mips/mips.c (mips_reorg): Likewise.
+
2009-01-28 Richard Guenther <rguenther@suse.de>
PR tree-optimization/38926
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index 55b1c22..c98528e 100644
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -13296,7 +13296,7 @@ mips_reorg (void)
mips16_lay_out_constants ();
if (mips_r10k_cache_barrier != R10K_CACHE_BARRIER_NONE)
r10k_insert_cache_barriers ();
- if (flag_delayed_branch)
+ if (optimize > 0 && flag_delayed_branch)
dbr_schedule (get_insns ());
mips_reorg_process_insns ();
if (!TARGET_MIPS16
diff --git a/gcc/reorg.c b/gcc/reorg.c
index fd6a58e..8b3219a 100644
--- a/gcc/reorg.c
+++ b/gcc/reorg.c
@@ -4046,7 +4046,8 @@ static bool
gate_handle_delay_slots (void)
{
#ifdef DELAY_SLOTS
- return flag_delayed_branch && !crtl->dbr_scheduled_p;
+ /* At -O0 dataflow info isn't updated after RA. */
+ return optimize > 0 && flag_delayed_branch && !crtl->dbr_scheduled_p;
#else
return 0;
#endif