gimple-fold.c (get_range_strlen): Minor logic cleanup.

* gimple-fold.c (get_range_strlen): Minor logic cleanup.  Add comments
	on code's intent.

Co-Authored-By: Jeff Law <law@redhat.com>

From-SVN: r267483
This commit is contained in:
Martin Sebor 2018-12-31 03:18:49 +00:00 committed by Jeff Law
parent 598f7235fb
commit 80c2bad6b6
2 changed files with 23 additions and 6 deletions

View File

@ -1,6 +1,9 @@
2018-12-30 Martin Sebor <msebor@redhat.com>
Jeff Law <law@redhat.com>
* gimple-fold.c (get_range_strlen): Minor logic cleanup. Add comments
on code's intent.
* gimple-fold.c (strlen_range_kind): New enum.
(get_range_strlen): Update signature to use strlen_range_kind
instead of type+fuzzy.

View File

@ -1548,10 +1548,17 @@ get_range_strlen (tree arg, tree length[2], bitmap *visited,
if (!get_range_strlen (ops[i], length, visited, rkind,
flexp, eltsize, nonstr))
{
if (rkind == SRK_LENRANGE_2)
*maxlen = build_all_ones_cst (size_type_node);
else
if (rkind != SRK_LENRANGE_2)
return false;
/* Set the upper bound to the maximum to prevent
it from being adjusted in the next iteration but
leave MINLEN and the more conservative MAXBOUND
determined so far alone (or leave them null if
they haven't been set yet). That the MINLEN is
in fact zero can be determined from MAXLEN being
unbounded but the discovered minimum is used for
diagnostics. */
*maxlen = build_all_ones_cst (size_type_node);
}
return true;
}
@ -1576,10 +1583,17 @@ get_range_strlen (tree arg, tree length[2], bitmap *visited,
if (!get_range_strlen (arg, length, visited, rkind, flexp,
eltsize, nonstr))
{
if (rkind == SRK_LENRANGE_2)
*maxlen = build_all_ones_cst (size_type_node);
else
if (rkind != SRK_LENRANGE_2)
return false;
/* Set the upper bound to the maximum to prevent
it from being adjusted in the next iteration but
leave MINLEN and the more conservative MAXBOUND
determined so far alone (or leave them null if
they haven't been set yet). That the MINLEN is
in fact zero can be determined from MAXLEN being
unbounded but the discovered minimum is used for
diagnostics. */
*maxlen = build_all_ones_cst (size_type_node);
}
}
return true;