This test expected if-conversion to happen for a sequence which appears to always cost more than a branchy sequence. This was exposed by a recent change to the if-converter to add checking in a path where it was missing.

So I've just adjusted the test to assume it should never if-convert into cmov instructions.

Committed to the trunk. There's a few of the embedded targets that are regressing in similar manners, so I'm not closing the PR yet.

jeff
commit f1f18198b069f461155191ecba41bc87bf5689dd
Author: Jeff Law <jlaw@ventanamicro>
Date:   Fri Apr 21 12:22:24 2023 -0600

    Adjust x86 testsuite for recent if-conversion cost checking
    
    gcc/testsuite
            PR testsuite/109549
            * gcc.target/i386/cmov6.c: No longer expect this test to
            generate 'cmov' instructions.

diff --git a/gcc/testsuite/gcc.target/i386/cmov6.c 
b/gcc/testsuite/gcc.target/i386/cmov6.c
index 535326e4c2a..5111c8a9099 100644
--- a/gcc/testsuite/gcc.target/i386/cmov6.c
+++ b/gcc/testsuite/gcc.target/i386/cmov6.c
@@ -1,6 +1,9 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -march=k8" } */
-/* { dg-final { scan-assembler "cmov\[^6\]" } } */
+/* if-converting this sequence would require two cmov
+   instructions and seems to always cost more independent
+   of the TUNE_ONE_IF_CONV setting.  */
+/* { dg-final { scan-assembler-not "cmov\[^6\]" } } */
 
 /* Verify that blocks are converted to conditional moves.  */
 extern int bar (int, int);

Reply via email to