https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118819
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at gcc dot gnu.org
--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
That is true, but I've added the
r15-7374-g886ce970eb096bb302228c891f0c8a889c79ad40
change which might trigger this because it will use those
-9223372036854775807ish offsets from sp.
So perhaps
--- gcc/alias.cc.jj 2025-01-02 11:23:24.000000000 +0100
+++ gcc/alias.cc 2025-02-25 12:43:16.655507666 +0100
@@ -2537,12 +2537,14 @@ memrefs_conflict_p (poly_int64 xsize, rt
{
if (poly_int_rtx_p (y1, &cy1))
return memrefs_conflict_p (xsize, x0, ysize, y0,
- c - cx1 + cy1);
+ (poly_uint64) c - cx1 + cy1);
else
- return memrefs_conflict_p (xsize, x0, ysize, y, c - cx1);
+ return memrefs_conflict_p (xsize, x0, ysize, y,
+ (poly_uint64) c - cx1);
}
else if (poly_int_rtx_p (y1, &cy1))
- return memrefs_conflict_p (xsize, x, ysize, y0, c + cy1);
+ return memrefs_conflict_p (xsize, x, ysize, y0,
+ (poly_uint64) c + cy1);
return -1;
}
@@ -2563,7 +2565,8 @@ memrefs_conflict_p (poly_int64 xsize, rt
poly_int64 cy1;
if (poly_int_rtx_p (y1, &cy1))
- return memrefs_conflict_p (xsize, x, ysize, y0, c + cy1);
+ return memrefs_conflict_p (xsize, x, ysize, y0,
+ (poly_uint64) c + cy1);
else
return -1;
}
@@ -2643,7 +2646,7 @@ memrefs_conflict_p (poly_int64 xsize, rt
poly_int64 cx, cy;
if (poly_int_rtx_p (x, &cx) && poly_int_rtx_p (y, &cy))
{
- c += cy - cx;
+ c += (poly_uint64) cy - cx;
return offset_overlap_p (c, xsize, ysize);
}
Or just do it for the c - cx1 + cy1 and c += cy - cx; cases?