Hi,
I run into such an XPASS for trunck. And it seems an old problem.
XPASS: gcc.dg/Wunreachable-8.c (test for bogus messages, line 7)
/* { dg-do compile } */
/* { dg-options "-O2 -Wunreachable-code" } */
float Factorial(float X)
{
float val = 1.0;
int k,j;
for (k=1; k < 5; k++) /* { dg-bogus "will never be executed" "" {
xfail *-*-* } } */
{
val += 1.0; /* { dg-bogus "will never be executed" "" { xfail *-*-* } } */
}
return (val); /* { dg-bogus "will never be executed" } */
}
The warning is generated during remove_bb <bb 3> in
pass_complete_unrolli. It's odd that after complete unrolling, there
is one redundant iteration bb.
(gdb) p debug_function (current_function_decl,1)
Factorial (float X)
{
int k;
float val;
<bb 2>:
<bb 7>:
val_10 = 2.0e+0;
k_11 = 2;
<bb 8>:
# val_12 = PHI <val_10(7)>
# k_13 = PHI <k_11(7)>
<bb 9>:
val_14 = val_12 + 1.0e+0;
k_15 = k_13 + 1;
<bb 10>:
# val_16 = PHI <val_14(9)>
# k_17 = PHI <k_15(9)>
<bb 11>:
val_18 = val_16 + 1.0e+0;
k_19 = k_17 + 1;
<bb 12>:
# val_20 = PHI <val_18(11)>
# k_21 = PHI <k_19(11)>
<bb 13>:
val_22 = val_20 + 1.0e+0;
k_23 = k_21 + 1;
goto <bb 4>;
<bb 3>:
val_5 = val_1 + 1.0e+0;
k_6 = k_2 + 1;
<bb 4>:
Invalid sum of outgoing probabilities 180.0%
Invalid sum of incoming frequencies 3600, should be 2000
# val_1 = PHI <val_22(13), val_5(3)>
# k_2 = PHI <k_23(13), k_6(3)>
if (1 == 0)
goto <bb 3>;
else
goto <bb 5>;
<bb 5>:
return val_1;
}
Regards,
Eric