gimple-ssa-sprintf.c (format_integer): Set knownrange when it's known.
authorMartin Sebor <msebor@redhat.com>
Mon, 1 May 2017 18:45:46 +0000 (18:45 +0000)
committerMartin Sebor <msebor@gcc.gnu.org>
Mon, 1 May 2017 18:45:46 +0000 (12:45 -0600)
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

gcc/ChangeLog
gcc/gimple-ssa-sprintf.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-18.c

index c58e4173880df908cbb6e928fa4c49b60c29ec09..0157559daef6326f7aaaa9879d3d726802476f43 100644 (file)
@@ -1,3 +1,8 @@
+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>
 
        PR target/68491
index c3c717d9060273594d9626611000cc35e4b89257..a3153c10019383ae7f75c7e8d331f9e378282f56 100644 (file)
@@ -1390,6 +1390,7 @@ format_integer (const directive &dir, tree arg)
            res.range.max = tree_digits (arg, base, dir.prec[1],
                                         maybesign, maybebase);
          res.range.likely = res.range.min;
+         res.knownrange = true;
        }
 
       res.range.unlikely = res.range.max;
index 4c2283a22b57e6bdeb94fa9834a8d93955875075..9d69bf7561c3465c99733dfa60e2b9ea99cb67c3 100644 (file)
@@ -1,3 +1,8 @@
+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>
 
        * gcc.dg/pr78768.c: Require linker plugin.
index 55c397457ff7403308719dce5b06c0b775bec35f..961fa487bb99071d4ce637da3c3c2328c97708bd 100644 (file)
@@ -114,18 +114,15 @@ void test_characters ()
 
 void test_width_and_precision_out_of_range (char *d)
 {
-#if __LONG_MAX__ == 2147483647
-#  define   MAX_P1_STR "2147483648"
-#elif __LONG_MAX__ == 9223372036854775807
-#  define MAX_P1_STR "9223372036854775808"
-#endif
-
-  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 range here happens to be a property of the compiler, not
+     one of the target.  */
+  T ("%9223372036854775808i", 0);    /* { dg-warning "width out of range" } */
+  /* { dg-warning "result to exceed .INT_MAX." "" { target *-*-* } .-1 } */
+  T ("%.9223372036854775808i", 0);   /* { dg-warning "precision out of range" } */
+  /* { dg-warning "causes result to exceed .INT_MAX." "" { target *-*-* } .-1 } */
 
   /* 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