aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorChristian Bruel <christian.bruel@st.com>2010-02-10 11:09:31 +0100
committerChristian Bruel <chrbr@gcc.gnu.org>2010-02-10 11:09:31 +0100
commit9e3c399e02e1049797557c7d04abe369a2df1bc0 (patch)
tree2a76912cd0066e10a3f6b471dfd69dfd2c3cccfe /gcc
parente938feb4286b063ff749bbda21fa5e433df062dc (diff)
downloadgcc-9e3c399e02e1049797557c7d04abe369a2df1bc0.zip
gcc-9e3c399e02e1049797557c7d04abe369a2df1bc0.tar.gz
gcc-9e3c399e02e1049797557c7d04abe369a2df1bc0.tar.bz2
sh.c (find_barrier): Increase length for non delayed conditional branches.
* config/sh/sh.c (find_barrier): Increase length for non delayed conditional branches. From-SVN: r156649
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/sh/sh.c7
2 files changed, 13 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b310463..94ab73f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2010-02-10 Christian Bruel <christian.bruel@st.com>
+ PR target/42841
+ * config/sh/sh.c (find_barrier): Increase length for non delayed
+ conditional branches.
+
+2010-02-10 Christian Bruel <christian.bruel@st.com>
+
* config/sh/sh.c (find_barrier): Don't emit a CP inside the GP setting.
2010-02-10 Jakub Jelinek <jakub@redhat.com>
diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c
index 475995b..d482100 100644
--- a/gcc/config/sh/sh.c
+++ b/gcc/config/sh/sh.c
@@ -4579,6 +4579,13 @@ find_barrier (int num_mova, rtx mova, rtx from)
&& ! TARGET_SMALLCODE)
new_align = 4;
+ /* There is a possibility that a bf is transformed into a bf/s by the
+ delay slot scheduler. */
+ if (JUMP_P (from) && !JUMP_TABLE_DATA_P (from)
+ && get_attr_type (from) == TYPE_CBRANCH
+ && GET_CODE (PATTERN (NEXT_INSN (PREV_INSN (from)))) != SEQUENCE)
+ inc += 2;
+
if (found_si)
{
count_si += inc;