aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimple-ssa-warn-restrict.c
diff options
context:
space:
mode:
authorMartin Sebor <msebor@redhat.com>2018-01-03 20:38:30 +0000
committerMartin Sebor <msebor@gcc.gnu.org>2018-01-03 13:38:30 -0700
commita6fd2cd769c3bb446085e45794fcb22481eed400 (patch)
tree8e3d75d5168c0b68ab7bdbbb2f7b0e8551b53fd9 /gcc/gimple-ssa-warn-restrict.c
parent830421fcd37719426fa8eb7f0d545c744db497b4 (diff)
downloadgcc-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.c39
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