OSDN Git Service

* config/sh/sh.c (find_barrier): Increase length for non delayed
authorchrbr <chrbr@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 10 Feb 2010 10:09:31 +0000 (10:09 +0000)
committerchrbr <chrbr@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 10 Feb 2010 10:09:31 +0000 (10:09 +0000)
conditional branches.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@156649 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/sh/sh.c

index b310463..94ab73f 100644 (file)
@@ -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>
index 475995b..d482100 100644 (file)
@@ -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;