Commit 5a54a15e by Jeff Law Committed by Jeff Law

re PR middle-end/82123 (spurious -Wformat-overflow warning for converted vars)

	PR middle-end/82123
	PR tree-optimization/81592
	PR middle-end/79257
	* gimple-ssa-sprintf.c (get_int_range): Query EVRP range analyzer for
	range data rather than using global data.

From-SVN: r257855
parent bbe2e114
...@@ -3,6 +3,8 @@ ...@@ -3,6 +3,8 @@
PR middle-end/82123 PR middle-end/82123
PR tree-optimization/81592 PR tree-optimization/81592
PR middle-end/79257 PR middle-end/79257
* gimple-ssa-sprintf.c (get_int_range): Query EVRP range analyzer for
range data rather than using global data.
* gimple-ssa-sprintf.c (get_int_range): Accept vr_values parameter * gimple-ssa-sprintf.c (get_int_range): Accept vr_values parameter
pass it to children as needed. pass it to children as needed.
(struct directive::fmtresult): Similarly. (struct directive::fmtresult): Similarly.
......
...@@ -1149,9 +1149,10 @@ get_int_range (tree arg, HOST_WIDE_INT *pmin, HOST_WIDE_INT *pmax, ...@@ -1149,9 +1149,10 @@ get_int_range (tree arg, HOST_WIDE_INT *pmin, HOST_WIDE_INT *pmax,
&& TYPE_PRECISION (argtype) <= TYPE_PRECISION (type)) && TYPE_PRECISION (argtype) <= TYPE_PRECISION (type))
{ {
/* Try to determine the range of values of the integer argument. */ /* Try to determine the range of values of the integer argument. */
wide_int min, max; value_range *vr = vr_values->get_value_range (arg);
enum value_range_type range_type = get_range_info (arg, &min, &max); if (vr->type == VR_RANGE
if (range_type == VR_RANGE) && TREE_CODE (vr->min) == INTEGER_CST
&& TREE_CODE (vr->max) == INTEGER_CST)
{ {
HOST_WIDE_INT type_min HOST_WIDE_INT type_min
= (TYPE_UNSIGNED (argtype) = (TYPE_UNSIGNED (argtype)
...@@ -1160,8 +1161,8 @@ get_int_range (tree arg, HOST_WIDE_INT *pmin, HOST_WIDE_INT *pmax, ...@@ -1160,8 +1161,8 @@ get_int_range (tree arg, HOST_WIDE_INT *pmin, HOST_WIDE_INT *pmax,
HOST_WIDE_INT type_max = tree_to_uhwi (TYPE_MAX_VALUE (argtype)); HOST_WIDE_INT type_max = tree_to_uhwi (TYPE_MAX_VALUE (argtype));
*pmin = min.to_shwi (); *pmin = TREE_INT_CST_LOW (vr->min);
*pmax = max.to_shwi (); *pmax = TREE_INT_CST_LOW (vr->max);
if (*pmin < *pmax) if (*pmin < *pmax)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment