Commit 4d82d0bc by Martin Sebor Committed by Martin Sebor

gimple-ssa-sprintf.c (format_integer): Set knownrange when it's known.

gcc/ChangeLog:
	* gimple-ssa-sprintf.c (format_integer): Set knownrange when it's
	known.

gcc/testsuite/ChangeLog:
	* tree-ssa/builtin-sprintf-warn-18.c: Adjust to avoid failures
	on ILP32 targets.

From-SVN: r247444
parent d539a57b
2017-05-01 Martin Sebor <msebor@redhat.com>
* gimple-ssa-sprintf.c (format_integer): Set knownrange when it's
known.
2017-05-01 Uros Bizjak <ubizjak@gmail.com> 2017-05-01 Uros Bizjak <ubizjak@gmail.com>
PR target/68491 PR target/68491
......
...@@ -1390,6 +1390,7 @@ format_integer (const directive &dir, tree arg) ...@@ -1390,6 +1390,7 @@ format_integer (const directive &dir, tree arg)
res.range.max = tree_digits (arg, base, dir.prec[1], res.range.max = tree_digits (arg, base, dir.prec[1],
maybesign, maybebase); maybesign, maybebase);
res.range.likely = res.range.min; res.range.likely = res.range.min;
res.knownrange = true;
} }
res.range.unlikely = res.range.max; res.range.unlikely = res.range.max;
......
2017-05-01 Martin Sebor <msebor@redhat.com>
* tree-ssa/builtin-sprintf-warn-18.c: Adjust to avoid failures
on ILP32 targets.
2017-05-01 Tom de Vries <tom@codesourcery.com> 2017-05-01 Tom de Vries <tom@codesourcery.com>
* gcc.dg/pr78768.c: Require linker plugin. * gcc.dg/pr78768.c: Require linker plugin.
......
...@@ -114,18 +114,15 @@ void test_characters () ...@@ -114,18 +114,15 @@ void test_characters ()
void test_width_and_precision_out_of_range (char *d) void test_width_and_precision_out_of_range (char *d)
{ {
#if __LONG_MAX__ == 2147483647 /* The range here happens to be a property of the compiler, not
# define MAX_P1_STR "2147483648" one of the target. */
#elif __LONG_MAX__ == 9223372036854775807 T ("%9223372036854775808i", 0); /* { dg-warning "width out of range" } */
# define MAX_P1_STR "9223372036854775808" /* { dg-warning "result to exceed .INT_MAX." "" { target *-*-* } .-1 } */
#endif T ("%.9223372036854775808i", 0); /* { dg-warning "precision out of range" } */
/* { dg-warning "causes result to exceed .INT_MAX." "" { target *-*-* } .-1 } */
T ("%" MAX_P1_STR "i", 0); /* { dg-warning "width out of range" } */
/* { dg-warning "result to exceed .INT_MAX. " "" { target *-*-* } .-1 } */
T ("%." MAX_P1_STR "i", 0); /* { dg-warning "precision out of range" } */
/* The following is diagnosed by -Wformat (disabled here). */ /* The following is diagnosed by -Wformat (disabled here). */
/* T ("%" MAX_P1_STR "$i", 0); */ /* T ("%9223372036854775808$i", 0); */
} }
/* Verify that an excessively long directive is truncated and the truncation /* Verify that an excessively long directive is truncated and the truncation
......
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