This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH SH] Fix PR57108


Hello,

This patches set the correct operand mode for tstsi_t_zero_extract_eq,
to avoid reload generating a move between a constant and a void register.

Reg tested for sh-elf. No performance impact

OK for 4.7, 4.8 and trunk ?

Thanks


2013-04-26  Christian Bruel  <christian.bruel@st.com>

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

2013-04-26  Christian Bruel  <christian.bruel@st.com>

	PR target/57108
	* gcc.target/sh/pr57108.c: New test.

Index: gcc/testsuite/gcc.target/sh/pr57108.c
===================================================================
--- gcc/testsuite/gcc.target/sh/pr57108.c	(revision 0)
+++ gcc/testsuite/gcc.target/sh/pr57108.c	(revision 0)
@@ -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 ());
+  }
+
+
+ }

Index: gcc/config/sh/sh.md
===================================================================
--- gcc/config/sh/sh.md	(revision 198287)
+++ gcc/config/sh/sh.md	(working copy)
@@ -689,7 +689,7 @@
 ;; Extract contiguous bits and compare them against zero.
 (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 Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]