https://gcc.gnu.org/g:539e6a417856519d6112e99a1583da1926e34047

commit r16-7501-g539e6a417856519d6112e99a1583da1926e34047
Author: Richard Biener <[email protected]>
Date:   Fri Feb 13 15:16:28 2026 +0100

    testsuite/115827 - avoid false negative because of CCP
    
    The following adjusts two uninit testcases to avoid a false negative
    that appears when using -msoft-float on arm because the testcase
    then mutates into a classical case of CCP eliding
    
      # _11 = PHI <1.0e+0(2), f$real_9(D)(3)>
    
    Avoid this by using a non-constant.  And avoid flipping locations
    for the diagnostic by not duplicating the return statement.
    
            PR testsuite/115827
            * gcc.dg/auto-init-uninit-17.c: Avoid CCP.
            * gcc.dg/uninit-17.c: Likewise.

Diff:
---
 gcc/testsuite/gcc.dg/auto-init-uninit-17.c | 7 ++-----
 gcc/testsuite/gcc.dg/uninit-17.c           | 7 ++-----
 2 files changed, 4 insertions(+), 10 deletions(-)

diff --git a/gcc/testsuite/gcc.dg/auto-init-uninit-17.c 
b/gcc/testsuite/gcc.dg/auto-init-uninit-17.c
index 9eec9440c75e..d76227abbe41 100644
--- a/gcc/testsuite/gcc.dg/auto-init-uninit-17.c
+++ b/gcc/testsuite/gcc.dg/auto-init-uninit-17.c
@@ -2,14 +2,11 @@
 /* { dg-options "-O -Wuninitialized -ftrivial-auto-var-init=zero" } */
 
 typedef _Complex float C;
-C foo(int cond)
+C foo(int cond, float r)
 {
   C f;
   __imag__ f = 0;
   if (cond)
-    {
-      __real__ f = 1;
-      return f;
-    }
+    __real__ f = r; /* No constant to avoid a CCP induced false negative. */
   return f;    /* { dg-warning "may be used" "unconditional" } */
 }
diff --git a/gcc/testsuite/gcc.dg/uninit-17.c b/gcc/testsuite/gcc.dg/uninit-17.c
index 8a95f15c5ae6..ebf2cae0ec27 100644
--- a/gcc/testsuite/gcc.dg/uninit-17.c
+++ b/gcc/testsuite/gcc.dg/uninit-17.c
@@ -2,14 +2,11 @@
 /* { dg-options "-O -Wuninitialized" } */
 
 typedef _Complex float C;
-C foo(int cond)
+C foo(int cond, float r)
 {
   C f;
   __imag__ f = 0;
   if (cond)
-    {
-      __real__ f = 1;
-      return f;
-    }
+    __real__ f = r; /* No constant to avoid a CCP induced false negative. */
   return f;    /* { dg-warning "may be used" "unconditional" } */
 }

Reply via email to