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.
/* { 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" } */
}
/* { 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" } */
}