https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82802
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |glisse at gcc dot gnu.org, | |rguenth at gcc dot gnu.org Target Milestone|6.5 |--- Known to fail| |5.4.0, 7.2.0 --- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- I think this was noted by Jakub somewhere - the FE converts the pointers to signed integer for the subtraction which causes the issue for pointers into objects that "wrap" around the "half" address-space. POINTER_DIFF_EXPR is supposed to allow fixing this. A band-aid would be to perform the subtraction in an unsigned type, then casting the result to a signed type to do the division by the element size. I think Jakub did this and there was some fallout.