]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/57108 ([4.7/4.8/4.9] SH internal compiler error: in int_mode_for_mode...
authorChristian Bruel <christian.bruel@st.com>
Mon, 29 Apr 2013 11:34:26 +0000 (13:34 +0200)
committerChristian Bruel <chrbr@gcc.gnu.org>
Mon, 29 Apr 2013 11:34:26 +0000 (13:34 +0200)
2013-04-29  Christian Bruel  <christian.bruel@st.com>

        PR target/57108
        * sh.md (tstsi_t_zero_extract_eq): Set mode for operand 0.

From-SVN: r198410

gcc/ChangeLog
gcc/config/sh/sh.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/sh/pr57108.c [new file with mode: 0644]

index 32689ee77b1359865f13fa72d5ee94b98489cbda..d2214c0dae600ac91d1bab301092b59ab2ccf099 100644 (file)
@@ -1,3 +1,8 @@
+2013-04-29  Christian Bruel  <christian.bruel@st.com>
+
+       PR target/57108
+       * sh.md (tstsi_t_zero_extract_eq): Set mode for operand 0.
+
 2013-04-27  Jakub Jelinek  <jakub@redhat.com>
 
        PR target/56866
index cbe0b2c01b577c9f92ffdd6d31af2fb27f20fdc7..14e6557d90ef5c38d1d2780dd497a7ba00f84b31 100644 (file)
 
 (define_insn "tstsi_t_zero_extract_eq"
   [(set (reg:SI T_REG)
-       (eq:SI (zero_extract:SI (match_operand 0 "logical_operand" "z")
+       (eq:SI (zero_extract:SI (match_operand:SI 0 "logical_operand" "z")
                (match_operand:SI 1 "const_int_operand")
                (match_operand:SI 2 "const_int_operand"))
          (const_int 0)))]
index ec94684f5acc6d26812495e4a10bec1aeaa8ae12..fda80e8a6c55195ecf38e186b8cc9b688e74094e 100644 (file)
@@ -1,3 +1,8 @@
+2013-04-29  Christian Bruel  <christian.bruel@st.com>
+
+       PR target/57108
+       * gcc.target/sh/pr57108.c: New test.
+
 2013-04-28  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
        Backport from trunk:
diff --git a/gcc/testsuite/gcc.target/sh/pr57108.c b/gcc/testsuite/gcc.target/sh/pr57108.c
new file mode 100644 (file)
index 0000000..3d39637
--- /dev/null
@@ -0,0 +1,19 @@
+/* { dg-do compile { target "sh*-*-*" } } */
+/* { dg-options "-O1" } */
+
+void __assert_func (void) __attribute__ ((__noreturn__)) ;
+
+void ATATransfer (int num, int buffer)
+{
+ int wordCount;
+
+ while (num > 0)
+  {
+    wordCount = num * 512 / sizeof (int);
+
+    ((0 == (buffer & 63)) ? (void)0 : __assert_func () );
+    ((0 == (wordCount & 31)) ? (void)0 : __assert_func ());
+  }
+
+
+ }