diff options
author | Christian Bruel <christian.bruel@st.com> | 2010-02-10 11:09:31 +0100 |
---|---|---|
committer | Christian Bruel <chrbr@gcc.gnu.org> | 2010-02-10 11:09:31 +0100 |
commit | 9e3c399e02e1049797557c7d04abe369a2df1bc0 (patch) | |
tree | 2a76912cd0066e10a3f6b471dfd69dfd2c3cccfe /gcc | |
parent | e938feb4286b063ff749bbda21fa5e433df062dc (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/sh/sh.c | 7 |
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; |