From a6fd2cd769c3bb446085e45794fcb22481eed400 Mon Sep 17 00:00:00 2001 From: Martin Sebor Date: Wed, 3 Jan 2018 20:38:30 +0000 Subject: 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 --- gcc/gimple-ssa-warn-restrict.c | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) (limited to 'gcc/gimple-ssa-warn-restrict.c') 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 -- cgit v1.1