[Bug middle-end/85563] [8/9 regression] -Wmaybe-uninitialized false alarm regression with __builtin_unreachable and GCC 8
glisse at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sat Feb 2 12:51:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85563
--- Comment #9 from Marc Glisse <glisse at gcc dot gnu.org> ---
--- gimple-ssa-evrp-analyze.c (revision 268474)
+++ gimple-ssa-evrp-analyze.c (working copy)
@@ -217,7 +217,8 @@ evrp_range_analyzer::record_ranges_from_
push_value_range (vrs[i].first, vrs[i].second);
if (is_fallthru
&& m_update_global_ranges
- && all_uses_feed_or_dominated_by_stmt (vrs[i].first, stmt))
+ && all_uses_feed_or_dominated_by_stmt (vrs[i].first, stmt)
+ && !has_single_use (vrs[i].first))
{
set_ssa_range_info (vrs[i].first, vrs[i].second);
maybe_set_nonzero_bits (pred_e, vrs[i].first);
does remove the warning on the reduced testcase. But I didn't run the testsuite
to check if it made sense. And if it does, it should probably come before
all_uses_feed_or_dominated_by_stmt because it is cheaper (or be integrated with
it, since it also iterates over all uses and is used only here).
It is a bit strange that EVRP sets a range that means the condition is always
false (well, that is not quite true, sometimes range intersection gives
something weaker), but doesn't remove the unreachable branch itself, which
survives all the way to VRP1. I guess it doesn't cause any trouble except for
having a slightly larger function during IPA.
More information about the Gcc-bugs
mailing list