Stop reload1.c warning from breaking bootstrap
authorRichard Sandiford <richard.sandiford@arm.com>
Thu, 10 Sep 2015 19:17:24 +0000 (19:17 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Thu, 10 Sep 2015 19:17:24 +0000 (19:17 +0000)
Some host-target combinations get bogus warnings about orig_dup
being used uninitialized.  I tried to coerce the current uninit
pass to handle this case, but the patch I ended up with only worked
by accident because of the strange way in which the pass handles
limit cases.  (If we have more than MAX_NUM_CHAINS chains, it silently
drops the excess chains and continues regardless, so it's quite easy
to come up with cases where the predicates for either the definition
or the use consider an arbitrary subset of the actual conditions.)

For now this patch turns -Wmaybe-uninitialized into a warning for
the affacted function.  It will be a warning even if someone turns
off warnings on the command line, but I don't think that's important.

Bootstrapped and regression-tested on x86_64-linux-gnu.  Also tested
with a cross-compiler to sparc-linux-gnu (which also triggered the
warning for me).

gcc/
* reload1.c (elimination_costs_in_insn): Locally turn
-Wmaybe-uninitialized into a warning.

From-SVN: r227658

gcc/ChangeLog
gcc/reload1.c

index 4831e7f96771910d2a398875c66777eb066456e4..a9a6fbd77b83df4ef2b1aabcaefc3215a8ec8469 100644 (file)
@@ -1,3 +1,8 @@
+2015-09-10  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * reload1.c (elimination_costs_in_insn): Locally turn
+       -Wmaybe-uninitialized into a warning.
+
 2015-09-10  Segher Boessenkool  <segher@kernel.crashing.org>
 
        * shrink-wrap.c (requires_stack_frame_p): Make static.
index ad243e321d165cb8fa2708a0ba4ca2048166322c..c7cc37bc94f1467c9ca7b3baebe12bbd9cd810d6 100644 (file)
@@ -3636,6 +3636,8 @@ eliminate_regs_in_insn (rtx_insn *insn, int replace)
    eliminations in its operands and record cases where eliminating a reg with
    an invariant equivalence would add extra cost.  */
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic warning "-Wmaybe-uninitialized"
 static void
 elimination_costs_in_insn (rtx_insn *insn)
 {
@@ -3785,6 +3787,7 @@ elimination_costs_in_insn (rtx_insn *insn)
 
   return;
 }
+#pragma GCC diagnostic pop
 
 /* Loop through all elimination pairs.
    Recalculate the number not at initial offset.