From: Jeff Law Date: Tue, 20 Feb 2018 18:53:29 +0000 (-0700) Subject: re PR middle-end/82123 (spurious -Wformat-overflow warning for converted vars) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c3684506742ca3669add18eafdefb8a30871afb6;p=gcc.git 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 (sprintf_dom_walker::handle_gimple_call): Query the EVRP range analyzer for range data rather than using global data. From-SVN: r257853 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bef9eb1d3ff..3dad6fe44b1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -3,6 +3,8 @@ PR middle-end/82123 PR tree-optimization/81592 PR middle-end/79257 + * gimple-ssa-sprintf.c (sprintf_dom_walker::handle_gimple_call): Query + the EVRP range analyzer for range data rather than using global data. * gimple-ssa-sprintf.c: Include alloc-pool.h, vr-values.h and gimple-ssa-evrp-analyze.h (class sprintf_dom_walker): Add after_dom_children member function. diff --git a/gcc/gimple-ssa-sprintf.c b/gcc/gimple-ssa-sprintf.c index 545f8337c13..4b2de6d2aa4 100644 --- a/gcc/gimple-ssa-sprintf.c +++ b/gcc/gimple-ssa-sprintf.c @@ -3903,16 +3903,13 @@ sprintf_dom_walker::handle_gimple_call (gimple_stmt_iterator *gsi) /* Try to determine the range of values of the argument and use the greater of the two at level 1 and the smaller of them at level 2. */ - wide_int min, max; - enum value_range_type range_type - = get_range_info (size, &min, &max); - if (range_type == VR_RANGE) - { - dstsize - = (warn_level < 2 - ? wi::fits_uhwi_p (max) ? max.to_uhwi () : max.to_shwi () - : wi::fits_uhwi_p (min) ? min.to_uhwi () : min.to_shwi ()); - } + value_range *vr = evrp_range_analyzer.get_value_range (size); + if (vr->type == VR_RANGE + && TREE_CODE (vr->min) == INTEGER_CST + && TREE_CODE (vr->max) == INTEGER_CST) + dstsize = (warn_level < 2 + ? TREE_INT_CST_LOW (vr->max) + : TREE_INT_CST_LOW (vr->min)); /* The destination size is not constant. If the function is bounded (e.g., snprintf) a lower bound of zero doesn't