diff options
author | Martin Sebor <msebor@redhat.com> | 2018-01-03 20:38:30 +0000 |
---|---|---|
committer | Martin Sebor <msebor@gcc.gnu.org> | 2018-01-03 13:38:30 -0700 |
commit | a6fd2cd769c3bb446085e45794fcb22481eed400 (patch) | |
tree | 8e3d75d5168c0b68ab7bdbbb2f7b0e8551b53fd9 /gcc/gimple-ssa-warn-restrict.c | |
parent | 830421fcd37719426fa8eb7f0d545c744db497b4 (diff) | |
download | gcc-a6fd2cd769c3bb446085e45794fcb22481eed400.zip gcc-a6fd2cd769c3bb446085e45794fcb22481eed400.tar.gz gcc-a6fd2cd769c3bb446085e45794fcb22481eed400.tar.bz2 |
gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Use offset_int::from instead of wide_int::to_shwi.
gcc/ChangeLog:
* gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Use
offset_int::from instead of wide_int::to_shwi.
(maybe_diag_overlap): Remove assertion.
Use HOST_WIDE_INT_PRINT_DEC instead of %lli.
* gimple-ssa-sprintf.c (format_directive): Same.
(parse_directive): Same.
(sprintf_dom_walker::compute_format_length): Same.
(try_substitute_return_value): Same.
gcc/testsuite/ChangeLog:
* gcc.dg/Wrestrict-3.c: New test.
From-SVN: r256187
Diffstat (limited to 'gcc/gimple-ssa-warn-restrict.c')
-rw-r--r-- | gcc/gimple-ssa-warn-restrict.c | 39 |
1 files changed, 21 insertions, 18 deletions
diff --git a/gcc/gimple-ssa-warn-restrict.c b/gcc/gimple-ssa-warn-restrict.c index 9b36797..8bae73d 100644 --- a/gcc/gimple-ssa-warn-restrict.c +++ b/gcc/gimple-ssa-warn-restrict.c @@ -276,13 +276,13 @@ builtin_memref::builtin_memref (tree expr, tree size) value_range_type rng = get_range_info (offset, &min, &max); if (rng == VR_RANGE) { - offrange[0] = min.to_shwi (); - offrange[1] = max.to_shwi (); + offrange[0] = offset_int::from (min, SIGNED); + offrange[1] = offset_int::from (max, SIGNED); } else if (rng == VR_ANTI_RANGE) { - offrange[0] = (max + 1).to_shwi (); - offrange[1] = (min - 1).to_shwi (); + offrange[0] = offset_int::from (max + 1, SIGNED); + offrange[1] = offset_int::from (min - 1, SIGNED); } else { @@ -1233,25 +1233,31 @@ maybe_diag_overlap (location_t loc, gcall *call, builtin_access &acs) if (dstref.offrange[0] == dstref.offrange[1] || dstref.offrange[1] > HOST_WIDE_INT_MAX) - sprintf (offstr[0], "%lli", (long long) dstref.offrange[0].to_shwi ()); + sprintf (offstr[0], HOST_WIDE_INT_PRINT_DEC, + dstref.offrange[0].to_shwi ()); else - sprintf (offstr[0], "[%lli, %lli]", - (long long) dstref.offrange[0].to_shwi (), - (long long) dstref.offrange[1].to_shwi ()); + sprintf (offstr[0], + "[" HOST_WIDE_INT_PRINT_DEC ", " HOST_WIDE_INT_PRINT_DEC "]", + dstref.offrange[0].to_shwi (), + dstref.offrange[1].to_shwi ()); if (srcref.offrange[0] == srcref.offrange[1] || srcref.offrange[1] > HOST_WIDE_INT_MAX) - sprintf (offstr[1], "%lli", (long long) srcref.offrange[0].to_shwi ()); + sprintf (offstr[1], + HOST_WIDE_INT_PRINT_DEC, + srcref.offrange[0].to_shwi ()); else - sprintf (offstr[1], "[%lli, %lli]", - (long long) srcref.offrange[0].to_shwi (), - (long long) srcref.offrange[1].to_shwi ()); + sprintf (offstr[1], + "[" HOST_WIDE_INT_PRINT_DEC ", " HOST_WIDE_INT_PRINT_DEC "]", + srcref.offrange[0].to_shwi (), + srcref.offrange[1].to_shwi ()); if (ovloff[0] == ovloff[1] || !ovloff[1]) - sprintf (offstr[2], "%lli", (long long) ovloff[0]); + sprintf (offstr[2], HOST_WIDE_INT_PRINT_DEC, ovloff[0]); else - sprintf (offstr[2], "[%lli, %lli]", - (long long) ovloff[0], (long long) ovloff[1]); + sprintf (offstr[2], + "[" HOST_WIDE_INT_PRINT_DEC ", " HOST_WIDE_INT_PRINT_DEC "]", + ovloff[0], ovloff[1]); const offset_int maxobjsize = tree_to_shwi (max_object_size ()); bool must_overlap = ovlsiz[0] > 0; @@ -1366,9 +1372,6 @@ maybe_diag_overlap (location_t loc, gcall *call, builtin_access &acs) } /* Issue "may overlap" diagnostics below. */ - gcc_assert (ovlsiz[0] == 0 - && ovlsiz[1] > 0 - && ovlsiz[1] <= maxobjsize.to_shwi ()); /* Use more concise wording when one of the offsets is unbounded to avoid confusing the user with large and mostly meaningless |