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]

Use -fno-if-conversion for gcc.dg/debug/debug-[12].c on MIPS targets


gcc.dg/debug/debug-1.c and gcc.dg/debug/debug-2.c have long been failing
on MIPS targets that support conditional moves.  This patch fixes them
by using -fno-if-conversion.  The comment explains why I think this is
the right fix and why the failures are not bugs.

Tested on mipsisa64-elf and applied to trunk.

Richard


gcc/testsuite/
	* gcc.dg/debug/debug-1.c: Use -fno-if-conversion MIPS targets.
	* gcc.dg/debug/debug-2.c: Likewise.

Index: gcc/testsuite/gcc.dg/debug/debug-1.c
===================================================================
--- gcc/testsuite/gcc.dg/debug/debug-1.c	(revision 117464)
+++ gcc/testsuite/gcc.dg/debug/debug-1.c	(working copy)
@@ -1,6 +1,24 @@
 /* Verify that the scheduler does not discard the lexical block.  */
 /* { dg-do compile } */
 /* { dg-options "-dA" } */
+/* On MIPS targets that support conditional moves, the optimal
+   implementation of this function is:
+
+	l[wd] tmp,p
+	li $2,2
+	jr $31
+	movz $2,$0,tmp
+
+   After if-conversion, we have a conditional move into a pseudo P
+   followed a copy of P into the return register ($2).  P is associated
+   with xyzzy, so if-conversion is behaving as expected, and has not lost
+   the variable association.  The destination of the second instruction
+   is associated with the function return value.  Combine then combines
+   these two instructions, removing the last use of P and xyzzy.
+
+   Everything is behaving as expected in this scenario, so we avoid
+   using conditional moves for this test.  */
+/* { dg-options "-dA -fno-if-conversion" { target mips*-*-* } } */
 /* { dg-final { scan-assembler "xyzzy" } } */
 
 long p;
Index: gcc/testsuite/gcc.dg/debug/debug-2.c
===================================================================
--- gcc/testsuite/gcc.dg/debug/debug-2.c	(revision 117464)
+++ gcc/testsuite/gcc.dg/debug/debug-2.c	(working copy)
@@ -1,6 +1,8 @@
 /* Verify that the scheduler does not discard the lexical block.  */
 /* { dg-do compile } */
 /* { dg-options "-dA" } */
+/* See the comment in debug-1.c.  */
+/* { dg-options "-dA -fno-if-conversion" { target mips*-*-* } } */
 /* { dg-final { scan-assembler "xyzzy" } } */
 
 long p;


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]