[Bug bootstrap/95555] [11 regression] bootstrap build failure starting with r11-959
msebor at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Jun 5 21:07:36 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95555
--- Comment #3 from Martin Sebor <msebor at gcc dot gnu.org> ---
(In reply to Andreas Schwab from comment #2)
> alternative_order[0] is guaranteed to be set, because alternative_reject[i]
> <= alternative_reject[which_alternative] for i == which_alternative at
> least. We know that which_alternative < recog_data.n_alternatives,
> otherwise alternative_reject[which_alternative] would be undefined.
That's another way of saying that the code must be correct because otherwise it
would be undefined. (There is no obvious constraint that which_alternative is
less than recog_data.n_alternatives.)
But if clearing alternative_order[0] is safe and if avoids the warning it's
fine with me. Bill, can you please confirm that the patch below suppresses it
(I can't reproduce it on my end)?
diff --git a/gcc/postreload.c b/gcc/postreload.c
index f6258285022..9b4e2bd9efb 100644
--- a/gcc/postreload.c
+++ b/gcc/postreload.c
@@ -592,6 +592,10 @@ reload_cse_simplify_operands (rtx_insn *insn, rtx testreg)
}
}
+ /* The loop below sets alternative_order[0] but -Wmaybe-uninitialized
+ can't know that. Clear it here to avoid the warning. */
+ alternative_order[0] = 0;
+
/* Record all alternatives which are better or equal to the currently
matching one in the alternative_order array. */
for (i = j = 0; i < recog_data.n_alternatives; i++)
More information about the Gcc-bugs
mailing list